1

我最近一直在尝试这个花哨的encodebingstreamer 元素。简单的例子效果很好,但我对更复杂的管道有一些问题。我gst-launch-1.0 version 1.18.4在msys上使用。我的工作流程如下:

首先,我使用 encodebin 从头开始​​创建一些 mp4 文件(它选择最好的编码器,在我的情况下它使用 nvidia gpu):

gst-launch-1.0.exe videotestsrc num-buffers=100 ! encodebin profile="video/quicktime,variant=iso:video/x-h264,tune=zerolatency,profile=baseline" ! filesink location="input.mp4"

这部分工作得很好,它使用硬件编码,这里一切都很好。

然后我想在这个文件中添加一些实时流,以保留时间等等。我为此目的创建的管道:

GST_DEBUG=3 gst-launch-1.0.exe concat name=c ! m.video_0 mp4mux name=m ! filesink location=out.mp4 filesrc location=input.mp4 ! parsebin ! h264parse ! c. videotestsrc num-buffers=100 ! encodebin profile="video/x-h264,tune=zerolatency,profile=baseline" ! c.

显然它对我不起作用,我得到:

/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:内部数据流错误。

流媒体停止,原因未协商 (-4)

有趣的是,如果我们从 mp4mux 切换到 mpegtsmux,效果会很好:

gst-launch-1.0.exe concat name=c ! mpegtsmux ! filesink location=out.mp4 filesrc location=input.mp4 ! parsebin ! h264parse ! c. videotestsrc num-buffers=100 ! encodebin profile="video/x-h264,tune=zerolatency,profile=baseline" ! c.

所以我开始想,是不是有mp4mux垫子的东西?任何人都知道为什么它不起作用mp4mux

4

0 回答 0