我的C ++应用程序加载原始音频和视频文件,并以Mpeg TS格式保存。目前,音频和视频的PID值是固定的。
我想使用C ++来获取那些音频和视频PID值。如果有人能告诉我怎么做,我真的很感激吗?
答案 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
完整的重新调整样本在这里:
enter link description here但它使用avio_open
。