GStreamer qtmux/mp4mux 代码转换命令
GStreamer qtmux/mp4mux command to code converting
我正在使用 qtmux 通过 GStreamer 将音频和视频合并到 mp4 容器文件中。我的管道看起来像:
gst-launch-1.0 autovideosrc ! x264编码!队列 ! qtmux0。自动音频!波!队列 ! qtmux!文件接收器位置=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**
但是步骤link pads 出错了。错误类型:GST_PAD_LINK_NOFORMAT (-4) – pads do not have common format
我该如何解决?
我想你在这里有开关 request/static 键盘呼叫。队列应该有静态垫,而混合器有请求垫。
您还可以像在命令行上一样使用 gst_parse_launch()
函数创建管道,从而使您的生活更轻松,从而节省大量容易出错的代码。
我正在使用 qtmux 通过 GStreamer 将音频和视频合并到 mp4 容器文件中。我的管道看起来像:
gst-launch-1.0 autovideosrc ! x264编码!队列 ! qtmux0。自动音频!波!队列 ! qtmux!文件接收器位置=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**
但是步骤link pads 出错了。错误类型:GST_PAD_LINK_NOFORMAT (-4) – pads do not have common format
我该如何解决?
我想你在这里有开关 request/static 键盘呼叫。队列应该有静态垫,而混合器有请求垫。
您还可以像在命令行上一样使用 gst_parse_launch()
函数创建管道,从而使您的生活更轻松,从而节省大量容易出错的代码。