MPEG2/TS获取PCR PID方法

一个简单的从指定MPEG2/TS文件中获取PCR PID的函数,

PMT的头结构中有PCR PID,我们首先得到PMT PID,然后分析PMT包,就可以得到PCR PID了。

GetPmtPid函数的实现见:http://blog.csdn.net/myaccella/article/details/6982596

MAKE_PID:

#define MAKE_PID(p) (((p[0]<<8) + p[1]) & 0x1fff)

 

ushort GetPcrPid(const char* filename)
{
#define TSPACKET_SIZE     188 
	ushort pid, pmtpid, pcrpid = 0;
	uchar buf[TSPACKET_SIZE];
	uchar* p = buf;
	FILE*  fp;
	
	pmtpid = GetPmtPid(filename);
	if (pmtpid == 0) {
		fprintf(stderr, "Unable to get PMT PID!\n");
		return 0;
	}

	fp = fopen(filename, "rb");
	if (fp == NULL) {
		fprintf(stderr, "Failed to open the file %s: %s\n", filename, strerror(errno));
		return 0;
	}


	while (fread(buf, 1, TSPACKET_SIZE, fp) == TSPACKET_SIZE) {
		if (buf[0] !&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mpeg2-tsMPEG-2 Transport Stream)是一种用于数字广播和视频传输的协议。它的目标是将音频、视频和其他数据以数据包的形式进行传输和存储。 mpeg2-ts的在线解析涉及将以mpeg2-ts格式编码的媒体文件进行解析和分析,以便播放或进行其他操作。解析过程包括以下几个步骤: 1. 读取文件头信息:首先读取文件的头部信息,其包括文件的标识符、版本号、编码信息等。通过分析头部信息,可以确定文件的类型和结构。 2. 解析PAT表(Program Association Table):PAT表记录了各个节目的信息和各个PID(Packet ID)的映射关系。通过解析PAT表,可以获取TS的所有节目的PID。 3. 解析PMT表(Program Map Table):PMT表描述了各个节目包含的音频、视频和其他数据的PID,并提供了流的详细信息。通过解析PMT表,可以获取到各个节目各个流的PID以及编码格式等相关信息。 4. 解析数据包:根据PID的信息,解析相应的数据包,提取出音频、视频和其他数据。对于音视频数据,还需要进行解码和解封装操作,以便进行播放或进一步处理。 5. 分析和处理数据:分析音视频和其他数据的格式、编码方式以及其他相关信息,以便进行后续处理,如解码、转码、封装等。 通过对mpeg2-ts文件进行在线解析,可以实现对媒体文件的播放、编辑、转码等功能。同时,也可以提取音视频数据进行分析和处理,以满足不同的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值