?? 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 + -