资源简介
将实时的H264流转为AVI文件,,也可经过改动将H264文件转化为AVI文件。
代码片段和文件信息
#include
#include
#include
#include
#include
#define _GNU_SOURCE
#include
#ifdef _MSC_VER
#include /* _setmode() */
#include /* _O_BINARY */
#endif
#include “bs.h“
#define DATA_MAX 3000000
uint8_t data[DATA_MAX];
typedef int bool;
#define false 0;
#define true 1;
/* Ctrl-C handler */
static int i_ctrl_c = 0;
static void SigIntHandler( int a )
{
i_ctrl_c = 1;
}
typedef struct
{
char *psz_fin;
char *psz_fout;
float f_fps;
char fcc[4];
} cfg_t;
typedef struct
{
int i_data;
int i_data_max;
uint8_t *p_data;
} vbuf_t;
void vbuf_init( vbuf_t * );
void vbuf_add( vbuf_t * int i_data void *p_data );
void vbuf_reset( vbuf_t * );
typedef struct
{
FILE *f;
float f_fps;
char fcc[4];
int i_width;
int i_height;
int64_t i_movi;
int64_t i_movi_end;
int64_t i_riff;
int i_frame;
int i_idx_max;
uint32_t *idx;
} avi_t;
void avi_init( avi_t * FILE * float char fcc[4] );
void avi_write( avi_t * vbuf_t * int );
void avi_end( avi_t * );
enum nal_unit_type_e
{
NAL_UNKNOWN = 0
NAL_SLICE = 1
NAL_SLICE_DPA = 2
NAL_SLICE_DPB = 3
NAL_SLICE_DPC = 4
NAL_SLICE_IDR = 5 /* ref_idc != 0 */
NAL_SEI = 6 /* ref_idc == 0 */
NAL_SPS = 7
NAL_PPS = 8
/* ref_idc == 0 for 69101112 */
};
enum nal_priority_e
{
NAL_PRIORITY_DISPOSABLE = 0
NAL_PRIORITY_LOW = 1
NAL_PRIORITY_HIGH = 2
NAL_PRIORITY_HIGHEST = 3
};
typedef struct
{
int i_ref_idc; /* nal_priority_e */
int i_type; /* nal_unit_type_e */
/* This data are raw pay0load */
int i_payload;
uint8_t *p_payload;
} nal_t;
typedef struct
{
int i_width;
int i_height;
int i_nal_type;
int i_ref_idc;
int i_idr_pic_id;
int i_frame_num;
int i_poc;
int b_key;
int i_log2_max_frame_num;
int i_poc_type;
int i_log2_max_poc_lsb;
int i_tick;
int i_time_scale;
bool vui_flag;
} h264_t;
void h264_parser_init( h264_t * );
void h264_parser_parse( h264_t *h nal_t *n int *pb_nal_start );
static int nal_decode( nal_t *nal void *p_data int i_data );
static void Help( void );
static int Parse( int argc char **argv cfg_t * );
static int ParseNAL( nal_t *nal avi_t *a h264_t *h int *pb_slice );
/****************************************************************************
* main:
****************************************************************************/
int main( int argc char **argv )
{
cfg_t cfg;
FILE *fout;
FILE *fin;
vbuf_t vb;
avi_t avi;
h264_t h264;
nal_t nal;
int i_frame;
int i_data;
int b_eof;
int b_key;
int b_slice;
int type;//tangxiaojun
int i_data2;//tangxiaojun
#ifdef _MSC_VER
_setmode(_fileno(stdin) _O_BINARY); /* thanks to Marcos Morais
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-31 08:47 avc2avi\
文件 21601 2012-10-30 18:57 avc2avi\avc2avi.c
文件 21704 2012-08-09 21:25 avc2avi\avc2avi.c.bak
文件 4155 2007-08-23 16:38 avc2avi\avc2avi.dsp
文件 537 2007-08-23 10:40 avc2avi\avc2avi.dsw
文件 681 2012-08-11 19:07 avc2avi\avc2avi.lnk
文件 91136 2012-10-30 18:58 avc2avi\avc2avi.ncb
文件 49664 2012-10-30 18:58 avc2avi\avc2avi.opt
文件 2463 2012-10-30 18:57 avc2avi\avc2avi.plg
目录 0 2012-10-30 18:57 avc2avi\Debug\
文件 140288 2012-08-08 14:45 avc2avi\Debug\avc2avi.bsc
文件 237618 2012-10-30 18:57 avc2avi\Debug\avc2avi.exe
文件 227940 2012-10-30 18:57 avc2avi\Debug\avc2avi.ilk
文件 38944 2012-10-30 18:57 avc2avi\Debug\avc2avi.obj
文件 232956 2012-10-30 18:57 avc2avi\Debug\avc2avi.pch
文件 435200 2012-10-30 18:57 avc2avi\Debug\avc2avi.pdb
文件 25283 2012-10-30 18:57 avc2avi\Debug\avc2avi.sbr
文件 14178 2012-08-13 13:15 avc2avi\Debug\getopt.obj
文件 15501 2012-08-13 13:15 avc2avi\Debug\getopt.sbr
文件 41984 2012-10-30 18:57 avc2avi\Debug\vc60.idb
文件 53248 2012-10-30 18:57 avc2avi\Debug\vc60.pdb
文件 12909 2007-08-23 11:30 avc2avi\getopt.c
目录 0 2012-08-11 19:37 avc2avi\inc\
文件 8826 2007-08-23 11:06 avc2avi\inc\bs.h
文件 6393 2005-12-07 12:41 avc2avi\inc\getopt.h
文件 5848 2005-12-07 12:41 avc2avi\inc\stdint.h
目录 0 2012-08-11 19:37 avc2avi\Release\
文件 3032275 2012-08-03 15:26 avc2avi\test.h264
- 上一篇:glew32.lib;glew.hglew.dll
- 下一篇:CCP协议全面解析
相关资源
- 最全解码测试h264测试文件包
- Navicat_Keygen_Patch_v4.9支持最新版Navica
- 基于verilog的MIPS32单周期CPU设计与实现
- 线性代数及其应用Linear algebra and its
- Navicat 12中文使用教程PDF
- Behzad Razavi RF Microelectronics.pdf
- Computer Networks Andrew S. Tanenbaum David J.
- Navicat12过期了怎么办和激活破解.doc
- Unity AI Behavior Designe_1.6 官网最新版本
- LBM程序.rar
- David K. Cheng - Field and Wave Electromagneti
- Behavior Designer 1.6.4.zip
- BehaviorDesigner1.6.1
- Video_coding_using_the_H.264_MPEG-4_AVC_compre
- Behavior Designer v1.5.11+配套资源包(完整
- h264视频流多个文件1080p
- jpeg-8c库 及H264转jpeg代码
- 《信号与系统结构精析 第二版》英文
- 电磁场与电磁波 第二版 David K Chen
- x264 vs2010工程
- H.264 SVC FSVM测试模型
- GNSS Global Navigation Satellite Systems GPS G
- H264裸流视频
- 如何使用mp4v2将H264+AAC裸流录制成mp4文
- 录屏保存avi
- Navicat12全系列激活注册机
- Fundamentals of Wireless Communications PPT_讲义
- Navicat 注册机 3.7
- 各种格式mp4、wmv、avi、mov等的视频转
- h.264码流分析软件Elecard StreamEye Tools
评论
共有 条评论