我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
“扬声器”音频是您的系统音频-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的音频文档:
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
Run Code Online (Sandbox Code Playgroud)
...而且我看不到里面有24个。您的录音可能听起来很糟糕,因为比特被截断了。
正如Sarge Borsch所述,您的Audio Midi设置将向您显示您的位深度和采样频率,并为您提供一些选择。您可以在“音频Midi Setup.app” >>“音频设备::内置输出::格式”中更改“扬声器”,直到找到有效的东西,或者可以在FFmpeg line命令中指定位深度以匹配您的设置。据我所知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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3507 次 |
| 最近记录: |