在ffmpeg中更改mpeg ts pid值

时间:2015-03-18 12:01:33

标签: c++ ffmpeg mpeg2-ts

我的C ++应用程序加载原始音频和视频文件,并以Mpeg TS格式保存。目前,音频和视频的PID值是固定的。

我想使用C ++来获取那些音频和视频PID值。如果有人能告诉我怎么做,我真的很感激吗?

2 个答案:

答案 0 :(得分:1)

@aergistal你为此使用AVDictionary是正确的。但avio_open2()方法不起作用。您必须将它传递给write header方法而不是avio_open2()方法

AVDictionary *d = NULL;
av_dict_set(&d, "mpegts_start_pid", "0x0050", 0);

//Write file header
if (avformat_write_header(ofmt_ctx, &d) < 0) {
    printf("Error occurred when opening output file\n");
    return false;
}

此方法有效。

谢谢。

答案 1 :(得分:0)

为MPEG-TS复用器设置 mpegts_start_pid AVOption。

例如:

int avio_open2  (AVIOContext **s,
                const char * url,
                int flags,
                const AVIOInterruptCB * int_cb,
                AVDictionary ** options 
)   

需要options parameter

更新:如何设置词典条目

AVDictionary *d = NULL;           // "create" an empty dictionary
av_dict_set(&d, "foo", "bar", 0); // add an entry

来自AVDictionary documentation

完整的重新调整样本在这里: enter link description here但它使用avio_open