我正在尝试用ffmpeg
of录制无损视频
- 我的屏幕
- 我的电脑音频
- 我的麦克风音频
使用这个脚本:
MIC="alsa_input.usb-Logitech_Logitech_USB_Headset-00.mono-fallback"
MONITOR="alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo.monitor"
AUDIO0=$(pactl list short | grep "$MIC" | grep -Po "[0-9]+" | head -1)
AUDIO1=$(pactl list short | grep "$MONITOR" | grep -Po "[0-9]+" | head -1)
ffmpeg \
-video_size 1920x1080 \
-framerate 60 \
-f x11grab -i :0.0 \
-f pulse -i $AUDIO0 \
-f pulse -i $AUDIO1 \
-map 0 -map 1 -map 2 \
-c:a copy \
-c:v libx264rgb \
-crf 0 \
-preset ultrafast \
video.mkv
在我的慢速计算机上,它只能以大约 7 FPS 的速度录制。有没有办法以更高的 FPS 进行录制,同时保持无损且文件大小相当小?
这 3 个音轨似乎彼此不同步约一秒,屏幕第一,麦克风第二,声音输出第三。我认为这是因为它在录音开始时按顺序识别它们。我可以手动重新同步它们,但解决问题会更容易。
答案1
x264 没有比 更快的预设ultrafast
,因此您可以:
- 将帧速率从 60 降低到电影级 24 甚至 15,因为我们正在讨论屏幕投射
- 使用不同的视频编解码器
- 如果您的 GPU 支持,请使用硬件视频编码加速
- 添加
-thread_queue_size 1024
为编码选项。 - 有些人说输出速率对于使所有内容同步很重要,因此请尝试添加
-r 60
.
我看不到其他选择。按照今天的标准,你的计算机确实很慢。