资源简介
实现将本地的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.em
文件 728 2012-09-28 12:53 TS_打包_本地文件_H264_1\TS_ PACK\TS_ PACK\Debug\TS_ PACK.exe.em
文件 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个文件信息
- 上一篇:数字图像处理mfc
- 下一篇:C语言名题精选百则 技巧篇+源码
相关资源
- linux系统C语言AVI格式音视频封装应用
- 使用RTP协议发送和接收H264的(支持解
- RTSP PUSH tcp udp h264 easydarwin
- H264视频解压缩封装 c++
- 常用算法深入学习实录(光盘C语言源
- DES C语言源代码 雪崩性质分析,差分
- 奇异值分解SVDC语言源代码
- 编译原理 语法分析C语言源代码
- 词法分析C语言源代码附实验报告
- 语法分析器C语言源代码附实验报告
- 启发式搜索算法解决八数码问题(C语
- RTSP服务器 C语言
- C语言源代码 《烟花》
- 两串口通讯C语言源代码
- C语言源代码学生成绩管理系统、图书
- libx264最新稳定版本附WINDOWS下编译步骤
- 数据结构家族谱管理系统C语言源代码
- 迷宫问题c语言源代码
- 基于TMS320VC5416的DTMF双音多频发生与检
- 利用LINUX FIFO命名管道技术实现双向聊
- 指法练习 C语言源代码
- 毕业设计图书管理系统C语言源代码,
- 超级玛丽c语言源代码
- 操作系统进程调度算法——短作业优
- dijkstra最短路算法c语言源代码
- 多级反馈队列调度算法C语言源代码
- 潜艇大战游戏C语言源代码
- 高斯函数消元法c语言源代码,解矩阵
- C语言程序设计学生成绩管理系统
- 飞机订票系统C语言
评论
共有 条评论