C GStreamer qtmux/mp4mux命令到代码转换
我正在使用qtmux将音频和视频与GStreamer合并到mp4容器文件中。我的管道看起来像: gst-launch-1.0 autovideosrc!x264enc!队列qtmux0。autoaudiosrc!韦文克!队列qtmux!fileLink位置=file.mp4C GStreamer qtmux/mp4mux命令到代码转换,c,gstreamer,muxer,C,Gstreamer,Muxer,我正在使用qtmux将音频和视频与GStreamer合并到mp4容器文件中。我的管道看起来像: gst-launch-1.0 autovideosrc!x264enc!队列qtmux0。autoaudiosrc!韦文克!队列qtmux!fileLink位置=file.mp4 videotestsrc --> x264enc -----\ >---> qtmux ---> filesink audiotestsr
videotestsrc --> x264enc -----\
>---> qtmux ---> filesink
audiotestsrc --> wavenc ------/
它与命令行配合得很好。但是我想用C代码来编写它。我被困在这一部分:
x264enc -----\
>---> qtmux
wavenc ------/
这是这部分的代码
gst_element_link_many(audiosource, wavenc, audioqueue, NULL);
gst_element_link_many(videosource, x264enc, videoqueue, NULL);
gst_element_link_many(qtmux, filesink, NULL);
audio_pad = gst_element_get_request_pad (audioqueue, "src");
mux_audio_pad = gst_element_get_static_pad (qtmux, "sink_1");
gst_pad_link (audio_pad,mux_audio_pad); **# ERROR HERE**
video_pad = gst_element_get_request_pad (videoqueue, "src");
mux_video_pad = gst_element_get_static_pad(qtmux, "sink_2");
gst_pad_link (video_pad,mux_video_pad); **# ERROR HERE**
但这是错误的步骤链接垫。错误类型:GST\u PAD\u LINK\u NOFORMAT(-4)–PAD没有通用格式
我怎样才能修复它?我想这里有开关请求/静态pad呼叫。当muxer有请求pad时,队列应该有静态pad
<>你也可以通过使用<代码> GSTYPARSEIAULCHORE()/Cux>函数来简化你的生活,就像你在命令行上创建一个流水线,从而节省很多容易出错的代码。C++:C++是C++相关的。C++是错误的标签。我已经把它拿走了。但是C是相关的。
我怎样才能写一个C代码来做这件事?
不是你应该怎么问这个问题。我编辑了这个问题。我希望很好,我试着听从你的指导。但我还是错了。我将上传下面的所有代码。实际上,我想修改一个自定义覆盖,其中包含了大量的东西信息。因此,使用gst_parse_launch()函数似乎不兼容。您可以随时从创建的管道访问所有单个元素。