使用fluent-ffmpeg录屏无系统音频问题排查求助
解决AVFoundation捕获系统音频的问题
问题核心在于macOS的AVFoundation框架默认无法直接捕获系统内部音频(如YouTube播放的声音),必须借助虚拟音频设备实现,再配合ffmpeg参数调整。
解决步骤:
安装虚拟音频设备
推荐使用BlackHole(替代停止维护的Soundflower),安装完成后在系统「音频设置」中,将「输出设备」切换为BlackHole,让系统音频路由到这个虚拟设备。确认设备编号
打开终端执行以下命令,列出所有AVFoundation可用设备:ffmpeg -f avfoundation -list_devices true -i ""输出里会标注屏幕设备(带
[screen]标记)和音频设备,找到你安装的虚拟音频设备对应的编号(比如2)。调整fluent-ffmpeg配置
修改source参数,格式为[屏幕设备编号]:[虚拟音频设备编号]。假设原屏幕设备编号是1,虚拟音频设备编号是2,则source改为1:2。
修改后的代码示例:
let command = ffmpeg({ source: '1:2' }) // 替换为你的屏幕+虚拟音频设备实际编号 command.inputFormat('avfoundation') command.fps(60) command.videoCodec('libx264') command.audioBitrate('320k') command.audioCodec('libmp3lame') command.addOption('-pix_fmt', 'yuv420p') // 可选:添加音频同步参数避免延迟 command.addOption('-async', '1') command.save('output.mp4')
额外注意事项:
- 如果需要同时录制麦克风+系统音频,可在音频设置中创建「多输出设备」,将麦克风和BlackHole合并,再用这个合并设备的编号作为音频源。
- 录制结束后记得把系统输出设备切回原扬声器,否则会无声音输出。
内容的提问来源于stack exchange,提问作者user2500558
相关产品推荐
相关产品推荐

