C语言 mp4视频到音频(Opus)+视频(av1)mux到mkv使用Gstreamer(管道停止在75%)

tez616oj  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(63)

我是多媒体处理的新手,我正在尝试创建一个动态管道,该管道获取此视频样本(https://download.samplelib.com/mp4/sample-5s.mp4),对其进行解复用,将音频转换为Opus编解码器,然后将视频转换为av 1编解码器并将它们复用在一起。
下面是我创建的一个pipeline:

gst-launch-1.0 -v filesrc location=input.mp4 \
  ! qtdemux name=demux matroskamux name=mux \
  ! filesink location=output.mkv demux.audio_0 \
  ! queue ! decodebin ! audioconvert ! audioresample ! opusenc ! mux. demux.video_0 \
  ! queue ! decodebin ! videoconvert ! av1enc ! mux.

字符串
它使用opusenc将音频转换为Opus,使用av 1 enc将视频转换为av 1,然后将它们复用。然而,由于某种原因,当视频处理了75%时,管道突然永远停止,没有任何进一步的进展(该过程运行了8个小时,所以我认为我确实可以声称它永远运行)。
有人能告诉我为什么会发生这种情况吗?我能/应该做些什么?我用的是最新版本的Ubuntu 22.04和最新版本的Gstreamer。

myzjeezk

myzjeezk1#

av1enc的默认延迟是多少?可能是队列太小而无法补偿延迟。也许lag-in-frames属性在这里有影响。或者增加队列大小。

相关问题