如何使用 FFmpeg 录制声卡上播放的内容?

Ang*_*ker 8 audio windows sound-card ffmpeg windows-8.1

我正在尝试在 Windows 8.1 中录制我的声卡上播放的内容

我运行以下命令来确定我拥有哪些设备:

ffmpeg -list_devices true -f dshow -i dummy
Run Code Online (Sandbox Code Playgroud)

输出列出:

DirectShow video devices (some may be both video and audio devices)
  "Built-in iSight"
DirectShow audio devices
  "Microphone (Cirrus Logic CS4206A (AB 71))"
  "Digital Audio (S/PDIF) (Cirrus Logic CS4206A (AB 71))"
Run Code Online (Sandbox Code Playgroud)

由此我假设这Digital Audio (S/PDIF) (Cirrus Logic CS4206A (AB 71))是我唯一的输出声卡。

所以我放了一些带有声音的随机 youtube 视频并运行以下命令来录制 10 秒的 mp3。

ffmpeg -f dshow -i audio="Digital Audio (S/PDIF) (Cirrus Logic CS4206A (AB 71))" -acodec libmp3lame  -t 10 out.mp3
Run Code Online (Sandbox Code Playgroud)

它确实录制了 10 秒的剪辑,但它是无声的。
当我查看播放设备时,我看到实际播放音频的设备是Speakers,而不是Digital Audio (S/PDIF)在此处输入图片说明

我尝试在 ffmpeg 命令行中替换Digital Audio (S/PDIF)Speakers,但它显然无法识别该设备。

我在一个类似的问题中看到,人们建议使用“立体声混音”——我根本没有在我的电脑上看到它。下载最新的驱动程序并没有将其添加到设备列表中。

那么我错过了什么?如何从声卡上录制音频

ADH*_*ADH 7

首先通过打开上面屏幕截图中显示的“声音”窗口来启用立体声混音,选择“录音”选项卡,然后右键单击该窗口并选择“显示禁用的设备”以切换立体声混音设备的可见性。这篇文章有更详细的说明。

启用立体声混音后,您需要将扬声器或耳机插入音频输出。然后运行命令以获取耳机/扬声器输出的名称。

ffmpeg -list_devices true -f dshow -i dummy
Run Code Online (Sandbox Code Playgroud)

以下是我在 Windows 10 Home 上获取音频的完整命令:

ffmpeg -f dshow -i audio="Microphone (Realtek High Definition Audio)" D:\Audio\output.mp3
Run Code Online (Sandbox Code Playgroud)

这是同时音频和视频的命令:

ffmpeg -f gdigrab -framerate ntsc -video_size 1920x1080 -i desktop  -f dshow -i audio="Microphone (Realtek High Definition Audio)" -vcodec libx264 -pix_fmt yuv420p -preset ultrafast D:\Movies\output.mp4
Run Code Online (Sandbox Code Playgroud)

该视频输出也可以在我的 iPad 上使用。我将笔记本电脑插入显示器,这将记录显示器的全屏以及扬声器发出的音频。


小智 5

如果它仍然与任何人相关的话。您需要打开上面所示的“声音设备”窗口,然后单击空白处的“人民币”并选择“显示禁用的设备”以切换立体声混音设备的可见性