📄 ts2m2v.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 + -