FFmpeg 解码过程中,有以下几个参数
AVFormatContext 结构体中有一个 ts_id 变量,表示文件 ID,固定值。
AVStream 结构体中有一个 id 变量,表示 FFmpeg 对文件中码流的编号,多信道 TS 文件中一般至少有视频流、音频流、菜单流三类。
AVFormatContext 结构体中的 programes 结构体变量有一个 id 变量,即为该流的菜单 ID(Menu ID)。一般该 ID 对应一路视频与一路或多路音频,音频有单/双通道。
因 FFmpeg 读取码流的顺序是未知的,因此需要根据菜单 ID 确定对应的视频流与音频流,如有菜单流、文字流及其他,均通过该 ID 定位。
以上信息也可通过 mediainfo 读取,更加方便。
代码如下:
#include "MediaInfoDLL.h"
#include <iostream>
#include <iomanip>
using namespace std;
using namespace MediaInfoDLL;
int main()
{
MediaInfo MI;
MI.Open(__T("d:\\Video\\CW\\test_576i_1080i_40E-10995V-H264-SD+HD.ts"));
//String info;
//MI.Option(__T("Complete"), __T("1")); //Complete //Video //Audio //Menu
//info += MI.Inform();
//wcout<<info.c_str()<<endl;
//St