首页 > 解决方案 > 使用 gst-launch 对录音添加延迟

问题描述

我有这个使用 gst-plugin-1.0 的现有程序,它通过了这个:

-e udpsrc port=3003 buffer-size=200000 ! h264parse ! queue ! http://mux.video_0 alsasrc device=plughw:1,0 ! "audio/x-raw,channels=1,depth=16,width=16,rate=44100" ! voaacenc bitrate=128000 ! aacparse ! queue ! http://mux.audio_0 qtmux name=mux ! filesink location="$RECPATH/record-`date +%Y%m%d%-H%M%S`.mp4" sync=true

这会从 x264 中的 udp 源获取视频,并直接从麦克风获取音频。它可以工作,但由于它不会同时对视频和音频进行编码,所以当视频流有延迟(由于更高质量的设置)时,我对音频有一点延迟。

因此,作为一种快速修复,我正在考虑在录音中添加延迟以进行补偿。我会根据视频质量手动计算延迟。

约束:gst-launch-1.0 版本 1.10.4(在树莓派,debian 拉伸上),使用驱动程序时间戳似乎无法访问,我收到错误“警告:错误管道:没有属性”使用驱动程序-timestamps”在元素“alsasrc0”'中。

所以我的问题是:有没有一种简单的方法可以为音频添加延迟?

标签: gstreamer

解决方案


queue元素具有属性,可让您在一段时间内min-threshold-time保留数据。n

https://gstreamer.freedesktop.org/documentation/coreelements/queue.html?gi-language=c#queue:min-threshold-time

或者,我也发现了这一点,这可能对您的案例管道 Gstremer 视频流延迟有用


推荐阅读