
技术文档
wen_jie
这个作者很懒,什么都没留下…
展开
-
AVCodec结构体
typedef struct AVCodec{// 标示Codec的名字,比如,"h264" "h263"等。const char *name; // 标示Codec的类型,有video,audio等类型。enum CodecType type;// 标示Codec的ID,有CODEC_ID_H264等。enum CodecID id; //原创 2016-06-23 11:37:03 · 546 阅读 · 0 评论 -
av_read_frame()
ffmpeg中的av_read_frame()的作用是读取码流中的音频若干帧或者视频一帧。例如,解码视频的时候,每解码一个视频帧,需要先调用av_read_frame()获得一帧视频的压缩数据,然后才能对该数据进行解码(例如H.264中一帧压缩数据通常对应一个NAL)。通过av_read_packet(***),读取一个包,需要说明的是此函数必须是包含整数帧的,不存在半帧的情况,以ts流为原创 2016-06-23 17:43:49 · 1454 阅读 · 0 评论 -
avcodec_register_all()
ffmpeg注册复用器,编码器等的函数av_register_all()。该函数在所有基于ffmpeg的应用程序中几乎都是第一个被调用的。只有调用了该函数,才能使用复用器,编码器等。 可见解复用器注册都是用REGISTER_DEMUXER (X,x)例如:REGISTER_DEMUXER (AAC, aac) 可见复用器注册都是用REGISTER_MUXER原创 2016-06-23 17:41:41 · 1053 阅读 · 0 评论 -
avformat_open_input
FFMPEG打开媒体的的过程开始于avformat_open_input,因此该函数的重要性不可忽视。在该函数中,FFMPEG完成了:输入输出结构体AVIOContext的初始化;输入数据的协议(例如RTMP,或者file)的识别(通过一套评分机制):1判断文件名的后缀2读取文件头的数据进行比对;使用获得最高分的文件协议对应的URLProtocol,通过函数指针的方式,与FFM原创 2016-06-23 17:32:47 · 643 阅读 · 0 评论 -
AVFrame结构体
typedef struct AVFrame {#define AV_NUM_DATA_POINTERS 8 uint8_t *data[AV_NUM_DATA_POINTERS]; int linesize[AV_NUM_DATA_POINTERS];uint8_t **extended_data; /**宽高 */ int width, heig原创 2016-06-23 14:39:11 · 654 阅读 · 0 评论 -
AVPacket 结构体
typedef struct AVPacket{//显示时间戳int64_t pts; //解码时间戳int64_t dts; //记录在文件或网络中的流中的字节的位置int64_t pos; //实际数据指针uint8_t *data;//实际的数据的大小int size;//该packet所属的流的索引,一般为0或者1int stream_i原创 2016-06-23 14:35:54 · 715 阅读 · 0 评论 -
MOVStreamContext 结构体
typedef struct MOVStreamContext { //流的索引,0或者1int ffindex; //临时变量,保存下一个chunk块的编号 int next_chunk;//chunk的个数(在mp4的文件格式中,从stco中取值肯定为chunk的总数)unsigned int chunk_count; //chunk在文原创 2016-06-23 14:33:20 · 735 阅读 · 0 评论 -
AVStream结构体
typedef struct AVStream {//指向解码器context,用于关联解码器AVCodecContext *actx; //codec解析器,每一种编码器在进行压缩时都会对实际负载数据进行封装,加//入头信息,如h264,需要解析nal单元,关联通过avav_find_stream_info() struct AVCodecParserContext *par原创 2016-06-23 14:08:56 · 883 阅读 · 0 评论 -
AVIOContext结构体
typedef struct ByteIOContext{//数据缓冲区unsigned char *buffer; //数据缓冲sizeint buffer_size;//数据读取标记指针unsigned char *buf_ptr, *buf_end;//该指针指向相应的URLContext,关联URLContextvoid *opaque;原创 2016-06-23 13:36:08 · 335 阅读 · 0 评论 -
URLContext结构体
typedef struct URLContext{ //指向相应的协议(协议为从初始化链表中注册的),如ff_file_protocolstruct URLProtocol *prot;int flags;int max_packet_size; //相应通信方式的句柄,对于文件为fd句柄,对于网络为socket句柄等void *priv_data; //文件原创 2016-06-23 13:34:58 · 1356 阅读 · 0 评论 -
URLProtocol结构体
typedef struct URLProtocol{const char *name; //用的统一的模板函数int(*url_open)(URLContext *h, const char *filename, int flags);int(*url_read)(URLContext *h, unsigned char *buf, int size);int(*url_原创 2016-06-23 13:27:21 · 852 阅读 · 0 评论 -
MovContext结构体
typedef struct MovContext{ //临时持有AVFormatContext的指针 AVFormatContext *fc; //时间缩放因子int time_scale;//视频的时长int64_t duration; //拆包时是否发现”moov“头int found_moov; //原创 2016-06-23 11:53:43 · 449 阅读 · 0 评论 -
AVFormatContext结构体
typedef struct AVFormatContext {//指向AVInputFormat,如对于mp4或mov为ff_mov_demuxerstruct AVInputFormat *iformat;// 指向具体的格式对应的Context,如:MovContext。void *priv_data; //指向数据读取统一接口contextByteIOConte原创 2016-06-23 11:49:21 · 562 阅读 · 0 评论 -
AVInputFormat结构体
typedef struct AVInputFormat{// 标示format的名字,比如,“mov” “mp4” 等。const char *name;// 标示具体的format对应的Context的size,如:MovContext。int priv_data_size; //具体的操作函数int(*read_probe)(AVProbeData*);原创 2016-06-23 11:46:53 · 963 阅读 · 0 评论 -
AVCodecContext结构体
typedef struct AVCodecContext{int bit_rate;int frame_number;//扩展数据,如mov格式中audio trak中aac格式中esds的附加解码信息。unsigned char *extradata; //扩展数据的sizeint extradata_size; //视频的原始的宽度与高度int width原创 2016-06-23 11:39:53 · 1692 阅读 · 0 评论 -
avcodec_decode_video2()
ffmpeg中的avcodec_decode_video2()的作用是解码一帧视频数据。输入一个压缩编码的结构体AVPacket,输出一个解码后的结构体AVFrame。原创 2016-06-23 17:45:08 · 748 阅读 · 0 评论