我正在尝试使用ffmpeg录制屏幕以及mac上的传入音频,但在输入设备列表中,没有"扬声器"。有没有办法获得输出音频?
$ ffmpeg -f avfoundation -list_devices true -i ""
configuration: --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
libavutil 55. 18.100 / 55. 18.100
libavcodec 57. 24.105 / 57. 24.105
libavformat 57. 26.100 / 57. 26.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 34.100 / 6. 34.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[AVFoundation input device @ 0x7fd5f9600360] AVFoundation video devices:
[AVFoundation input device @ 0x7fd5f9600360] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fd5f9600360] [1] Capture screen 0
[AVFoundation input device @ 0x7fd5f9600360] [2] Capture screen 1
[AVFoundation input device @ 0x7fd5f9600360] AVFoundation audio devices:
[AVFoundation input device @ 0x7fd5f9600360] [0] Soundflower (2ch)
[AVFoundation input device @ 0x7fd5f9600360] [1] Built-in Microphone
[AVFoundation input device @ 0x7fd5f9600360] [2] Soundflower (64ch)
: Input/output error
答案 0 :(得分:4)
“扬声器”音频是您的系统音频 - Soundflower允许您访问的内容。
鉴于Soundflower选项被识别为AV Foundation音频设备并显示在ffmpeg avfoundation -list_devices
命令生成的输出中,因此基本捕获了您的桌面([1] Capture screen 0
)和立体声系统声音([0] Soundflower (2ch)
)将是:
ffmpeg -f avfoundation -i "1:0" Screen.mov
请注意,"1:0"
为"[1] Capture screen 0:[0] Soundflower (2ch)"
我怀疑你的音频听起来不太好的原因是因为有点深度差异。我的Mac默认音频设置为24位。每FFmpeg's audio documentation:
ffmpeg -sample_fmts
表示ffmpeg具有以下格式和位深度:
u8 8
s16 16
s32 32
flt 32
dbl 64
u8p 8
s16p 16
s32p 32
fltp 32
dblp 64
s64 64
s64p 64
......我在那里看不到24。可能,你的录音听起来很糟糕,因为比特被截断了。
正如Sarge Borsch所说,您的音频Midi设置将向您显示您的位深度和采样频率,并为您提供一些选项。您可以在Audio Midi Setup.app>>中更改“扬声器”。音频设备::内置输出::格式,直到找到有效的内容,或者您可以在FFmpeg行命令中指定位深度以匹配您的设置。据我所知,FFmpeg将默认为源的位深度。请注意,在Audio Midi Setup.app中,您的“系统音频”设备将由Finder图标和扬声器图标指示 - 我通过我的霹雳端口使用外部显示器,“系统”音频将路由到该设备,而不是内置在演讲者。因此,根据您的配置,只需将音频位深度更改为16即可使用基本捕获语法:
ffmpeg -f avfoundation -i "1:0" Screen.mov
值得注意的是,ffmpeg可以处理24位PCM音频:
$ ffmpeg -formats | grep PCM | grep 24
DE s24be PCM signed 24-bit big-endian
DE s24le PCM signed 24-bit little-endian
DE u24be PCM unsigned 24-bit big-endian
DE u24le PCM unsigned 24-bit little-endian
答案 1 :(得分:0)
AVFoundation库在各种Mac计算机上的24位音频深度也能很好地工作,但我建议在没有捕获音频的情况下检查OSX中的音频设置。 对于Apple Mac设置,需要在Audio-MIDI-Setup实用程序中禁用“硬件速率转换器”。