FFmpeg 命令录制 Skype 声音和视频

FFmpeg 命令录制 Skype 声音和视频

我正在尝试使用 录制我的 Skype 通话ffmpeg。我需要录制音频(脉冲音频)& 视频(X)。不过好像有点棘手...

10对于音频录制,我想使用在 pulseaudio 中列为设备编号的 Scarlet 2i4 音频接口:

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

在哪里:

  • 第二行指定全部视频输入参数 (已测试并正常运行)
  • 第三行指定全部音频参数 (不工作)

但是当我执行命令时出现错误:

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”“死牛肉”流入录音?

答案1

您的脉冲输入仍然需要一个-i带有 ffmpeg 参数的选项来将其标记为输入。快速浏览代码建议将第 3 行更改为下面应该有效

-f pulse -ac 2 -i 10

相关内容