• 大小: 21.4MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-02
  • 语言: C/C++
  • 标签: H264  TS打包  LINUX  

资源简介

实现将本地的H264文件打包成TS流,使用的C语言,程序在LINUX下编译,可直接运行

资源截图

代码片段和文件信息

#include “Conversion.h“


FILE * OpenInputFile(FILE * FinputFilechar * InputFileName) 
{
FILE * inFile = NULL;
FinputFile = fopen(InputFileName“rb“);
if (NULL == FinputFile)
{
printf(“打开输入文件TS失败!\n“);
return NULL;
}
inFile = FinputFile;
                         
fseek(FinputFile0LSEEK_END); 
inputfile_length = ftell(FinputFile); 
printf(“本测试文件的长度是 %ld 个字节\n“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(“打开输出文件失败!\n“);
}
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(“打开输出文件失败!\n“);
}
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_1\TS_ PACK\Debug\TS_ PACK.exe

     文件     352256  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\Debug\TS_ PACK.ilk

     文件     420864  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\Debug\TS_ PACK.pdb

     文件    3082081  2012-09-14 14:41  TS_打包_本地文件_H264_1\TS_ PACK\H264\44.264

     文件    4258148  2012-09-24 10:54  TS_打包_本地文件_H264_1\TS_ PACK\H264\66.264

     文件    3082081  2012-09-28 12:52  TS_打包_本地文件_H264_1\TS_ PACK\H264\NEW44.264

     文件    4258148  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\H264\NEW66.264

     文件    3240180  2012-09-28 12:52  TS_打包_本地文件_H264_1\TS_ PACK\TS\44.ts

     文件    4626868  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS\66.ts

     文件      28728  2012-09-28 12:49  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Conversion.c

     文件       3479  2012-09-27 16:42  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Conversion.h

     文件       3286  2012-09-24 16:31  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\CRC.h

     文件      17844  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\BuildLog.htm

     文件      40213  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\Conversion.obj

     文件       7815  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\main.obj

     文件         65  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\mt.dep

     文件        663  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\TS_ PACK.exe.embed.manifest

     文件        728  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\TS_ PACK.exe.embed.manifest.res

     文件        621  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\TS_ PACK.exe.intermediate.manifest

     文件      44032  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\vc90.idb

     文件      69632  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\vc90.pdb

     文件       8452  2012-09-28 12:52  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Information.h

     文件       1295  2012-09-27 16:43  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\main.c

     文件       4165  2012-09-24 16:57  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\TS_ PACK.vcproj

     文件       1407  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\TS_ PACK.vcproj.HOLD.zhuwg.user

     文件     855040  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK.ncb

     文件        890  2012-09-24 10:26  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK.sln

    ..A..H.     20480  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK.suo

     文件         19  2012-09-29 20:53  www.opencvchina.com.txt

     目录          0  2012-09-28 12:53  TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug

............此处省略9个文件信息

评论

共有 条评论