同步多个实时输入

同步多个实时输入

ffmpeg我正在尝试使用3 个来源录制视频+音频:(x11grab桌面)、v4l2(网络摄像头)和alsa(麦克风)。我正在使用这个脚本:

#!/bin/bash

set -x

out=$1
rm -vf $out
rate=25
cam_size="848x480"
x11_size="1920x1080"
tqs="-thread_queue_size 512"

ffmpeg \
    -f x11grab $tqs -video_size $x11_size -framerate $rate -i :0.0 \
    -f v4l2 $tqs -video_size $cam_size -input_format mjpeg -framerate $rate -i /dev/video0 \
    -f alsa $tqs -i hw:0,0  \
    -filter_complex "[1:v]scale=424:240 [ovrl],[0:v][ovrl]overlay=x=W-w-32:y=H-h-32" \
    -vcodec libx264 -r $rate -preset fast -b 4000k -s $x11_size \
    -acodec aac -ar 48000 -ab 128k \
    $out

但并非所有源都同步:首先是音频,然后是网络摄像头,然后是桌面(网络摄像头的延迟较小~1 秒,桌面的延迟较大~3 秒)。

这个命令有什么问题?如何同步所有要录制的实时流而不延迟?

相关内容