Ffmpeg 使用带有gstreamer的MPEGTSUM将id3标签注入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

因此,我试图用mpegtsdemux解复用一个.ts文件,用基本流进行一些计算,然后将所有内容重新复用回使用相同的mpegts容器,这对视频和音频流非常有效,但是我对包含
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;

你是怎么解决的?