实现将本地的H264文件打包成TS流,使用的C语言,程序在LINUX下编译,可直接运行
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 47104 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKDebugTS_ PACK.exe
文件 352256 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKDebugTS_ PACK.ilk
文件 420864 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKDebugTS_ PACK.pdb
文件 3082081 2012-09-14 14:41 TS_打包_本地文件_H264_1TS_ PACKH26444.264
文件 4258148 2012-09-24 10:54 TS_打包_本地文件_H264_1TS_ PACKH26466.264
文件 3082081 2012-09-28 12:52 TS_打包_本地文件_H264_1TS_ PACKH264NEW44.264
文件 4258148 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKH264NEW66.264
文件 3240180 2012-09-28 12:52 TS_打包_本地文件_H264_1TS_ PACKTS44.ts
文件 4626868 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS66.ts
文件 28728 2012-09-28 12:49 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKConversion.c
文件 3479 2012-09-27 16:42 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKConversion.h
文件 3286 2012-09-24 16:31 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKCRC.h
文件 17844 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugBuildLog.htm
文件 40213 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugConversion.obj
文件 7815 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugmain.obj
文件 65 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugmt.dep
文件 663 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugTS_ PACK.exe.embed.manifest
文件 728 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugTS_ PACK.exe.embed.manifest.res
文件 621 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugTS_ PACK.exe.intermediate.manifest
文件 44032 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugvc90.idb
文件 69632 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugvc90.pdb
文件 8452 2012-09-28 12:52 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKInformation.h
文件 1295 2012-09-27 16:43 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKmain.c
文件 4165 2012-09-24 16:57 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKTS_ PACK.vcproj
文件 1407 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKTS_ PACK.vcproj.HOLD.zhuwg.user
文件 855040 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACK.ncb
文件 890 2012-09-24 10:26 TS_打包_本地文件_H264_1TS_ PACKTS_ PACK.sln
..A..H. 20480 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACK.suo
文件 19 2012-09-29 20:53 www.opencvchina.com.txt
目录 0 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebug
............此处省略9个文件信息
#include “Conversion.h“
FILE * OpenInputFile(FILE * FinputFilechar * InputFileName)
{
FILE * inFile = NULL;
FinputFile = fopen(InputFileName“rb“);
if (NULL == FinputFile)
{
printf(“打开输入文件TS失败!
“);
return NULL;
}
inFile = FinputFile;
fseek(FinputFile0LSEEK_END);
inputfile_length = ftell(FinputFile);
printf(“本测试文件的长度是 %ld 个字节
“inputfile_length);
fseek(FinputFile0LSEEK_SET); // 文件指针移动到文件首
return FinputFile;
}
FILE * OpenOutputFile(FILE * FOutputFilechar * OutputFileName)
{
FOutputFile = fopen(OutputFileName “w“);
if (NULL != FOutputFile)
{
fclose(FOutputFile);
fopen(OutputFileName “w“);//文件清空
fclose(FOutputFile);
FOutputFile = NULL;
}
else
{
printf(“打开输出文件失败!
“);
}
FOutputFile = fopen(OutputFileName “wb“);
return FOutputFile;
}
FILE * OpenOutputNEWh264File(FILE * FOutputFilechar * OutputFileName)
{
FOutputFile = fopen(OutputFileName “w“);
if (NULL != FOutputFile)
{
fclose(FOutputFile);
fopen(OutputFileName “w“);//文件清空
fclose(FOutputFile);
FOutputFile = NULL;
}
else
{
printf(“打开输出文件失败!
“);
}
FOutputFile = fopen(OutputFileName “wb“);
return FOutputFile;
}
int CloseInputFile(FILE * FInputFile)
{
fclose(FInputFile);
return 1;
}
int CloesOutputFile(FILE * FOutputFile)
{
fclose(FOutputFile);
return 1;
}
TsPacketHeader * CreateTsHeader(TsPacketHeader * ts_headerunsigned int PIDunsigned char play_initunsigned char ada_field_Cunsigned char conti_cter)
{
ts_header->sync_byte = TS_SYNC_BYTE;
ts_header->tras_error = 0x00;
ts_header->play_init = play_init;
ts_header->tras_prio = 0x01;
ts_header->PID = PID;
ts_header->tras_scramb = 0x00;
ts_header->ada_field_C = ada_field_C;
ts_header->conti_cter = conti_cter;
return ts_header;
}
int TsHeader2buffer( TsPacketHeader * ts_headerunsigned char *buffer)
{
buffer[0]=ts_header->sync_byte;
buffer[1]=ts_header->tras_error<<7|ts_header->play_init<<6|ts_header->tras_prio<<5|((ts_header->PID>>8)&0x1f);
buffer[2]=(ts_header->PID&0x00ff);
buffer[3]=ts_header->tras_scramb<<6|ts_header->ada_field_C<<4|ts_header->conti_cter;
return 1;
}
int CRC_crc32Calculate(unsigned char *buffer unsigned int size unsigned int *CRC32)
{
unsigned int crc32 = 0xFFFFFFFF;
unsigned int cntBytetemp1temp2temp3;
for (cntByte = 0; cntByte < size; cntByte++)
{
temp1 = (crc32 << 8 );
temp2 = crc32_table[((crc32 >> 24) ^ * buffer) & 0xFF];
temp3 = temp1^temp2;
crc32 = (crc32 << 8 ) ^ crc32_table[((crc32 >> 24) ^ * buffer++) & 0xFF];
}
*CRC32 = crc32;
return 1;
}
int CreatePAT()
{
TsPacketHeader * ts_header;
TsPat * ts_pat;
unsigned char PatBuf[TS_PACKET_SIZE];
unsigned char * pointer_pat;
unsigned int PAT_CRC = 0xFFFFFFFF;
ts_header = (TsPacketHeader *)malloc(sizeof(TsPacketHeader) * 1);
ts_pat = (TsPat * )malloc(sizeof(TsPat) * 1);
memset(PatBuf
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 47104 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKDebugTS_ PACK.exe
文件 352256 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKDebugTS_ PACK.ilk
文件 420864 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKDebugTS_ PACK.pdb
文件 3082081 2012-09-14 14:41 TS_打包_本地文件_H264_1TS_ PACKH26444.264
文件 4258148 2012-09-24 10:54 TS_打包_本地文件_H264_1TS_ PACKH26466.264
文件 3082081 2012-09-28 12:52 TS_打包_本地文件_H264_1TS_ PACKH264NEW44.264
文件 4258148 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKH264NEW66.264
文件 3240180 2012-09-28 12:52 TS_打包_本地文件_H264_1TS_ PACKTS44.ts
文件 4626868 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS66.ts
文件 28728 2012-09-28 12:49 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKConversion.c
文件 3479 2012-09-27 16:42 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKConversion.h
文件 3286 2012-09-24 16:31 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKCRC.h
文件 17844 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugBuildLog.htm
文件 40213 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugConversion.obj
文件 7815 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugmain.obj
文件 65 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugmt.dep
文件 663 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugTS_ PACK.exe.em
文件 728 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugTS_ PACK.exe.em
文件 621 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugTS_ PACK.exe.intermediate.manifest
文件 44032 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugvc90.idb
文件 69632 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebugvc90.pdb
文件 8452 2012-09-28 12:52 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKInformation.h
文件 1295 2012-09-27 16:43 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKmain.c
文件 4165 2012-09-24 16:57 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKTS_ PACK.vcproj
文件 1407 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKTS_ PACK.vcproj.HOLD.zhuwg.user
文件 855040 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACK.ncb
文件 890 2012-09-24 10:26 TS_打包_本地文件_H264_1TS_ PACKTS_ PACK.sln
..A..H. 20480 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACK.suo
文件 19 2012-09-29 20:53 www.opencvchina.com.txt
目录 0 2012-09-28 12:53 TS_打包_本地文件_H264_1TS_ PACKTS_ PACKDebug
............此处省略9个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)