我正在尝试使用 记录我的 Skype 通话ffmpeg
。我需要录制音频(pulseaudio)和视频(X)。不过好像有点棘手……
对于录音,我想使用我的 Scarlet 2i4 音频接口,它10
在 pulseaudio 中列为设备编号:
ziga@ziga-laptop:~$ pactl list short cards
2 alsa_card.pci-0000_00_1b.0 module-alsa-card.c
10 alsa_card.usb-Focusrite_Scarlett_2i4_USB-00 module-alsa-card.c
~$ pactl list short sinks
16 alsa_output.usb-Focusrite_Scarlett_2i4_USB-00.analog-surround-40 module-alsa-card.c s32le 4ch 44100Hz SUSPENDED
~$ pactl list short sources
24 alsa_output.usb-Focusrite_Scarlett_2i4_USB-00.analog-surround-40.monitor module-alsa-card.c s32le 4ch 44100HzSUSPENDED
25 alsa_input.usb-Focusrite_Scarlett_2i4_USB-00.analog-stereo module-alsa-card.c s32le 2ch 44100Hz IDLE
从这里我可以看到我想要的卡是一个设备10
,所以我构造了我的 ffmpeg 命令,如下所示:
ffmpeg \
-f x11grab -s 1920x1080 -probesize 17M -r 30 -i :0.0+0+0 \
-f pulse -ac 2 -device 10 \
-output.mkv
在哪里:
- 第二行指定所有视频输入参数 (测试和工作)
- 第 3行指定所有音频参数 (不起作用)
但是当我执行命令时出现错误:
Output #0, pulse, to 'output.mkv':
Output file #0 does not contain any stream
有谁知道为什么?如何录制 Skype 声音?
添加
@Gyan 的建议虽然没有奏效,但它为我指明了正确的方向。
我使用参数-device
而不是-i
. 后者是一个输入参数,如果我们指定一个设备号 10
,它就不起作用。我们必须指定一个我们可以使用的输入pactl list short sources
。所以我们可以使用源编号 25
,例如:
ffmpeg -f x11grab -s 1920x1080 -probesize 17M -r 30 -i :0.0+0+0 -f pulse -ac 2 -i 25 output.mkv
这会运行,但它只记录一个来源,即我的麦克风。它完全忽略了例如 Skype、音频播放器...
如果我pavucontrol
在运行 Skype 和我的音频播放器时打开,会pavucontroll
显示这些应用程序流:
如何在录制中包含“Skype”和“Deadbeef”流?
您的脉冲输入仍然需要一个
-i
带有 arg 的选项,以便 ffmpeg 将其标记为输入。快速浏览代码表明将第 3 行更改为下面应该可以