Ffmpeg 使用带有gstreamer的MPEGTSUM将id3标签注入mpegts
因此,我试图用mpegtsdemux解复用一个.ts文件,用基本流进行一些计算,然后将所有内容重新复用回使用相同的mpegts容器,这对视频和音频流非常有效,但是我对包含Ffmpeg 使用带有gstreamer的MPEGTSUM将id3标签注入mpegts,ffmpeg,video-streaming,gstreamer,id3,Ffmpeg,Video Streaming,Gstreamer,Id3,因此,我试图用mpegtsdemux解复用一个.ts文件,用基本流进行一些计算,然后将所有内容重新复用回使用相同的mpegts容器,这对视频和音频流非常有效,但是我对包含timed_id3数据包的数据流(#2)有一些困难。在这种情况下,我只想通过它们,因为它们未被触及,但是,无论是deumxer还是muxer都无法识别该流或创建适当的焊盘,更不用说,在管道从暂停运行到运行后成功连接 以下是使用ffmpeg提取的我的文件的详细信息: Stream #0:0[0x101]: Audio: a
timed_id3
数据包的数据流(#2)有一些困难。在这种情况下,我只想通过它们,因为它们未被触及,但是,无论是deumxer还是muxer都无法识别该流或创建适当的焊盘,更不用说,在管道从暂停运行到运行后成功连接
以下是使用ffmpeg
提取的我的文件的详细信息:
Stream #0:0[0x101]: Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000
Hz, stereo, fltp, 117 kb/s
Stream #0:1[0x102]: Video: h264 (High) ([27][0][0][0] / 0x001B),
yuv420p(tv, bt709, progressive), 1280x720, Closed Captions, 59.94 fps, 59.94
tbr, 90k tbn, 96k tbc
Stream #0:2[0x103]: Data: timed_id3 (ID3 / 0x20334449)
到目前为止,我已经设法只生成meta/x-klv caps,但这不是我真正需要的。任何其他尝试都以未协商
错误或内部流错误
结束
我还读到,可以从muxer请求pad
,但这也失败了
std::stringstream ss;
ss << "src_" << streamIdx_;
gstSrc_ = gst_element_factory_make("appsrc", ss.str().c_str());
gst_bin_add_many(GST_BIN(pipeline), gstSrc_, nullptr);
GstPadTemplate* mux_src_pad_template = gst_element_class_get_pad_template(GST_ELEMENT_GET_CLASS(mux), "sink_%d");
GstCaps* caps = gst_caps_new_simple("private/x-timed_id3", NULL);
GstPad* pad = gst_element_request_pad(mux, mux_src_pad_template, nullptr, caps);
gboolean success = gst_element_link_pads(gstSrc_, "src", mux, gst_pad_get_name(pad));
g_object_set(gstSrc_, "format", GST_FORMAT_TIME, nullptr);
gst_caps_unref(caps);
std::stringstream-ss;
你是怎么解决的?