首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能清理卡上播放的声音?

我怎样才能清理卡上播放的声音?
EN

Stack Overflow用户
提问于 2022-02-26 11:54:50
回答 1查看 59关注 0票数 -1

我正在尝试设置我的linux桌面,以便能够查看和侦听连接到我的捕获卡的设备。我写了这个2行脚本,可以做到这一点,但我的声音是不正常的,有点扭曲,我怎么能清理它?

代码语言:javascript
复制
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秒的延迟,有办法解决这个问题吗?

代码语言:javascript
复制
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 -
EN

回答 1

Stack Overflow用户

发布于 2022-02-26 14:41:46

你能试着在第二种方法中使用ffplay吗?

代码语言:javascript
复制
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是否还在检查这篇文章,但是有一种解决方案,通过使用输入过滤器和movieamovie过滤器,将两个输入合并为ffplay。以下内容在Windows中有效(尽管延迟过大得令人无法接受):

代码语言:javascript
复制
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中也应该是这样的:

代码语言:javascript
复制
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 ),因此它可能值得一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71276413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档