用于录制屏幕和内部音频的 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.0
X11屏幕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)。