使用 ffmpeg 录制屏幕和内部音频

使用 ffmpeg 录制屏幕和内部音频

用于录制屏幕和内部音频的 ffmpeg 命令是什么(在 Ubuntu 18.04 上)?

我将省略许多我尝试过但不起作用的事情,并跳至与我正在寻找的内容接近的内容;

V="$(xdpyinfo | grep dimensions | perl -pe 's/.* ([0-9]+x[0-9]+) .*/$1/g')"
A="$(pacmd list-sources | grep -PB 1 "analog.*monitor>" | head -n 1 | perl -pe 's/.* //g')"
F="$(date --iso-8601=minutes).mkv"
ffmpeg -video_size "$V" -framerate 10 -f x11grab -i :0.0 -f pulse -ac 2 -i "$A" "$F"

我可以获取视频,但无法获取音频。

parecord  -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  example.wav # index: 1

将获得音频。

答案1

帧速率应用于两个流,但由于 ffmpeg 文档示例分散,我将在这里留下答案

A="$(pacmd list-sources | grep -PB 1 "analog.*monitor>" | head -n 1 | perl -pe 's/.* //g')"
F="$(date --iso-8601=minutes | perl -pe 's/[^0-9]+//g').mkv"
V="$(xdpyinfo | grep dimensions | perl -pe 's/.* ([0-9]+x[0-9]+) .*/$1/g')"
ffmpeg -loglevel error -video_size "$V" -f x11grab -i :0.0 -f pulse -i "$A" -f pulse -i default -filter_complex amerge -ac 2 -preset veryfast "$F"

在哪里

#A=1
#F=2018121711440500.mkv
#V=2560x1440
  • ffmpeg工具
  • -loglevel error仅打印错误
  • -video_size "$V"屏幕分辨率(如果您只想录制一小部分,则可以降低分辨率)
  • -f x11grab录制屏幕(wayland 上可能无法录制屏幕?)
  • -i :0.0X11屏幕ID,(也可以添加+x,y作为偏移量)
  • -f pulse音频驱动程序
  • -i "$A"音频流的id
  • -f pulse再次音频驱动程序(也许不需要?)
  • -i default通常是系统麦克风
  • -filter_complex amerge合并 2 个音频流
  • -ac 2将 4 个音频通道转换为 2 个
  • -preset veryfast简化视频编码以避免卡顿
  • "$F"输出文件

请记住,参数顺序很重要,并且pavucontrol只能在 ffmpeg 运行时重新映射音频。

答案2

ffmpeg -f x11grab -i :0.0 -f pulse -i 0 output_30_fps_fullscreen.mp4

注:改变0pulse -i 0如果您从麦克风中听到声音,则将(零)转换为适当的数字(例如1)。

相关内容