C GStreamer qtmux/mp4mux命令到代码转换

C 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

我正在使用qtmux将音频和视频与GStreamer合并到mp4容器文件中。我的管道看起来像:

gst-launch-1.0 autovideosrc!x264enc!队列qtmux0。autoaudiosrc!韦文克!队列qtmux!fileLink位置=file.mp4

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()函数似乎不兼容。您可以随时从创建的管道访问所有单个元素。