⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ts2m2v.c

📁 convert ts streams into m2v streams
💻 C
字号:
#include <stdio.h>
#include <io.h>

void main()
{
	FILE *fp,*fo;
	unsigned long file_len,packet_num;
	unsigned char one_packet[188];
	int wr_len,pes_header_len;
	unsigned char adap_ctrl;
	unsigned long i;
	unsigned short PID;
	unsigned __int64 pre_pts=0,cur_pts=0;

	//if((fp=fopen("E:\\H264\\bitstreams\\anixeHD.ts","rb"))==NULL)	if((fp=fopen("F:\\temp\\HQV_jaggies1.ts","rb"))==NULL)
	{
		printf("Can not open input file!\n");
		return;
	}
	//if((fo=fopen("E:\\H264\\bitstreams\\HD2-h264.264","wb"))==NULL)	if((fo=fopen("F:\\temp\\HQV_jaggies1.m2v","wb"))==NULL)
	{
		printf("Can not open output file!\n");
		fcloseall();
		return;
	}

	file_len = filelength(fileno(fp));

	packet_num = file_len/188;

	for(i=0;i<packet_num;i++)
	{
		fread(one_packet,1,188,fp);
		wr_len = 188-4;
		if(one_packet[1]&0x80)
			printf("packet error!\n");
		PID = ((one_packet[1]&0x1f)<<8) | one_packet[2];
		if(PID != 0x3e9)		//if(PID != 0x1ff)
		//if(PID != 0x304)
			continue;
		

		adap_ctrl = (one_packet[3]>>4)&3;
		if(adap_ctrl==2)
		{
			printf("ctrl2\n");
			continue;
		}
		else if(adap_ctrl==3)
		{
			wr_len -= one_packet[4]+1;
		}		
	    pes_header_len=0;
		if(one_packet[188-wr_len]==0x00
			&& one_packet[188-wr_len+1]==0x00
			&& one_packet[188-wr_len+2]==0x01
			&& one_packet[188-wr_len+3]==0xe0)
		{
			pes_header_len = 9;
			pes_header_len += one_packet[188-wr_len+8];
			if(one_packet[188-wr_len+8]!=0 && one_packet[188-wr_len+7]==0 && one_packet[188-wr_len+6]==0x80)
			{
				printf("i=%d\n",i);
			}
		}

		fwrite(one_packet+188-wr_len+pes_header_len,1,wr_len-pes_header_len,fo);
	}
	fcloseall();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -