我正在尝试设置我的linux桌面,以便能够查看和侦听连接到我的捕获卡的设备。我写了这个2行脚本,可以做到这一点,但我的声音是不正常的,有点扭曲,我怎么能清理它?
arecord --buffer-time=1 -f cd - | aplay --buffer-time=1 -c 5 -r 48000 -f S16_LE - 2> /dev/null &
ffplay -f video4linux2 -framerate 30 -video_size 1920x1080 -input_format mjpeg /dev/video1 2> /dev/null &我也试着用ffmpeg管道播放,声音是非常清晰的,但是视频和声音有2-3秒的延迟,有办法解决这个问题吗?
ffmpeg -framerate 30 -video_size 1920x1080 -thread_queue_size 1024 -input_format mjpeg -i /dev/video1 -f pulse -i 'Analog Input - USB Video' -r 30 -threads 4 -vcodec libx264 -crf 0 -preset ultrafast -vsync 1 -async 1 -f matroska - |ffplay -发布于 2022-02-26 14:41:46
你能试着在第二种方法中使用ffplay吗?
ffplay -framerate 30 -video_size 1920x1080 \
-thread_queue_size 1024 -input_format mjpeg -i /dev/video1 \
-f pulse -i 'Analog Input - USB Video'`由于我只熟悉ffmpeg,而且不亲自使用ffplay,所以我可能不熟悉它,但是它们有很多共同之处(例如后端库和命令行解析),所以我用套期保值来解决这个问题。
另外,你所说的“视频和声音延迟2-3秒”是什么意思?是不是比你的身体所见所闻还晚2-3秒?或者它们在那么多秒内就失去了同步?
增编
不确定OP是否还在检查这篇文章,但是有一种解决方案,通过使用输入过滤器和movie和amovie过滤器,将两个输入合并为ffplay。以下内容在Windows中有效(尽管延迟过大得令人无法接受):
ffplay -f lavfi -i \
movie=filename=video="Logitech HD Webcam C310":format_name=dshow:format_opts=rtbufsize=702000k[out0]; \
amovie=filename=audio="Microphone (HD Webcam C310)":format_name=dshow[out1]请注意,这只是为了说明目的,因为dshow设备可以输出多个流(尽管延迟仍然太差,无法实时使用)。
在Linux中也应该是这样的:
ffplay -f lavfi -i \
movie=filename=/dev/video1:format_name=video4linux2:format_opts='framerate=30:video_size=1920x1080:thread_queue_size=1024:input_format=mjpeg'[out0]; \
amovie=filename='Analog Input - USB Video':format_name=pulse[out1](免责声明:未经测试,可能漏掉逃逸)
这种延迟在Linux中可能更好(并且具有比我更高规格的PC ),因此它可能值得一试。
https://stackoverflow.com/questions/71276413
复制相似问题