我正在使用qtmux合并音频和视频到GStreamer的mp4容器文件。我的管道看起来像这样:
gst-launch-1.0 autovideosrc!x264enc!排队!qtmux0。自动音频!瓦文克!排队!qtmux!文件链接location=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_PAD_LINK_NOFORMAT (-4) – pads do not have common format
我怎么才能修复它?
发布于 2020-12-18 19:53:43
我想这里有开关请求/静态pad调用。队列应该具有静态填充,而多路复用器具有请求填充。
您还可以像在命令行中一样,使用gst_parse_launch()函数创建管道,从而节省大量容易出错的代码。
https://stackoverflow.com/questions/65336726
复制相似问题