资源简介
将实时的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协议全面解析
相关资源
- Navicat Premium 15汉化包.zip55438
- JM阅读笔记(学习H264)
- h264 ip核,经过asic验证
- H.264编码器流程图
- Behaviors of fatigue crack propagation in fric
- Navicat Keygen Patch v5.6.0 DFoX
- Navicat V11全系列注册机
- H.264视频编码基本知识
- Investigation on the present situation of envi
- WinAVI 8.0 绿色中文版
- Analytical behaviour of concrete-encased CFST
- Global existence and behavior in thehigher-dim
- PatchNavicat11.0.10破解文件亲测可用
- Behavior Designer 1.6.3(u2018.3.0).unitypa
- navicat注册机含详细使用说明
- FFMEPG实现h264解码
- H264标准的详细图解
- RTMP_H265推流直播技术研讨
- 电子-GravityI2C3.7V锂电池电量计stm32L1
- Navicat 完整版 (Mac 破解版,亲试成功
- Google DeepMind的David Silver的强化学习课
- vs2010 ffmpeg实时解码h264码流
- Qt基于FFmpeg播放本地 H.264H264文件
- 从ffmpeg中抽取的h264解码器,可用于
- 基于ffmpeg将avi视频转换为mp4视频
- (补充)修改output-example,将H.264AAC帧
- 屏幕录像专家 exe转avi 视频快放
- ffmpeg解码sdl播放h264
- 最简单的基于FFmpeg的编码器 1.2
- 使用ffmpeg将多张图片生成H264裸流并获
评论
共有 条评论