1 avcodec_find_decoder()

/**

* Find a registered decoder with a matching codec ID.

*

* @param id CodecID of the requested decoder

* @return A decoder if one was found, NULL otherwise.

*/

AVCodec *avcodec_find_decoder(enum CodecID id);

// 通过code ID查找一个已经注册的音视频解码器

// 引入 #include
"libavcodec/avcodec.h"

// 实现在: \ffmpeg\libavcodec\utils.c

// 查找解码器之前,必须先调用av_register_all注册所有支持的解码器

// 查找成功返回解码器指针,否则返回NULL

// 音视频解码器保存在一个链表中,查找过程中,函数从头到尾遍历链表,通过比较解码器的ID来查找

2 avcodec_find_decoder_by_name()

/**

* Find a registered decoder with the specified name.

*

* @param name name of the requested decoder

* @return A decoder if one was found, NULL otherwise.

*/

AVCodec *avcodec_find_decoder_by_name(const
char *name);

// 通过一个指定的名称查找一个已经注册的音视频解码器

// 引入 #include
"libavcodec/avcodec.h"

// 实现在: \ffmpeg\libavcodec\utils.c

// 查找解码器之前,必须先调用av_register_all注册所有支持的解码器

// 查找成功返回解码器指针,否则返回NULL

// 音视频解码器保存在一个链表中,查找过程中,函数从头到尾遍历链表,通过比较解码器的name来查找

3 avcodec_find_encoder()

/**

* Find a registered encoder with a matching codec ID.

*

* @param id CodecID of the requested encoder

* @return An encoder if one was found, NULL otherwise.

*/

AVCodec *avcodec_find_encoder(enum CodecID id);

// 通过code ID查找一个已经注册的音视频编码器

// 引入 #include
"libavcodec/avcodec.h"

// 实现在: \ffmpeg\libavcodec\utils.c

// 查找编码器之前,必须先调用av_register_all注册所有支持的编码器

// 查找成功返回编码器指针,否则返回NULL

// 音视频编码器保存在一个链表中,查找过程中,函数从头到尾遍历链表,通过比较编码器的ID来查找

4 avcodec_find_encoder_by_name()

/**

* Find a registered encoder with the specified name.

*

* @param name name of the requested encoder

* @return An encoder if one was found, NULL otherwise.

*/

AVCodec *avcodec_find_encoder_by_name(const
char *name);

// 通过一个指定的名称查找一个已经注册的音视频编码器

// 引入 #include
"libavcodec/avcodec.h"

// 实现在: \ffmpeg\libavcodec\utils.c

// 查找编码器之前,必须先调用av_register_all注册所有支持的编码器

// 查找成功返回编码器指针,否则返回NULL

// 音视频编码器保存在一个链表中,查找过程中,函数从头到尾遍历链表,通过比较编码器的名称来查找

5 avcodec_open()

/**

* Initialize the AVCodecContext to use the given AVCodec. Prior to using this

* function the context has to be allocated.

*

* The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),

* avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for

* retrieving a codec.

*

* @warning This function is not thread safe!

*

* @code

* avcodec_register_all();

* codec = avcodec_find_decoder(CODEC_ID_H264);

* if (!codec)

*     exit(1);

*

* context = avcodec_alloc_context();

*

* if (avcodec_open(context, codec) < 0)

*     exit(1);

* @endcode

*

* @param avctx The context which will be set up to use the given codec.

* @param codec The codec to use within the context.

* @return zero on success, a negative value on error

* @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder, avcodec_close

*/

int avcodec_open(AVCodecContext *avctx, AVCodec *codec);

// 使用给定的AVCodec初始化AVCodecContext

// 引入#include
"libavcodec/avcodec.h"

// 方法: avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), avcodec_find_decoder() and avcodec_find_encoder() 提供了快速获取一个codec的途径

// 该方法在编码和解码时都会用到

// 返回0时成功,打开作为输出时,参数设置不对的话,调用会失败

 
6 av_guess_format()

/**

* Return the output format in the list of registered output formats

* which best matches the provided parameters, or return NULL if

* there is no match.

*

* @param short_name if non-NULL checks if short_name matches with the

* names of the registered formats

* @param filename if non-NULL checks if filename terminates with the

* extensions of the registered formats

* @param mime_type if non-NULL checks if mime_type matches with the

* MIME type of the registered formats

*/

AVOutputFormat *av_guess_format(const
char *short_name,

const
char *filename,

const
char *mime_type);

// 返回一个已经注册的最合适的输出格式

// 引入#include
"libavformat/avformat.h"

// 可以通过 const
char *short_name 获取,如"mpeg"

// 也可以通过 const
char *filename 获取,如"E:\a.mp4"

7 av_new_stream()

/**

* Add a new stream to a media file.

*

* Can only be called in the read_header() function. If the flag

* AVFMTCTX_NOHEADER is in the format context, then new streams

* can be added in read_packet too.

*

* @param s media file handle

* @param id file-format-dependent stream ID

*/

AVStream *av_new_stream(AVFormatContext *s,
int id);

// 为媒体文件添加一个流,一般为作为输出的媒体文件容器添加音视频流

// 引入 #include
"libavformat/avformat.h"

// 再打开源文件时用户一般不需要直接调用该方法

 
8 dump_format()

#if FF_API_DUMP_FORMAT

/**

* @deprecated Deprecated in favor of av_dump_format().

*/

attribute_deprecated void dump_format(AVFormatContext *ic,

int index,

const
char *url,

int is_output);

#endif

// 该函数的作用就是检查下初始化过程中设置的参数是否符合规范
// 有些版本中为 av_dump_format
 
9 av_set_parameters()

#if FF_API_FORMAT_PARAMETERS

/**

* @deprecated pass the options to avformat_write_header directly.

*/

attribute_deprecated int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap);

#endif

// 设置初始化参数
// 不赞成跳过该方法,直接调用 avformat_write_header/av_write_header
 
10 av_write_header()

#if FF_API_FORMAT_PARAMETERS

/**

* Allocate the stream private data and write the stream header to an

* output media file.

* @note: this sets stream time-bases, if possible to stream->codec->time_base

* but for some formats it might also be some other time base

*

* @param s media file handle

* @return 0 if OK, AVERROR_xxx on error

*

* @deprecated use avformat_write_header.

*/

attribute_deprecated int av_write_header(AVFormatContext *s);

#endif

// 把流头信息写入到媒体文件中
// 返回0成功

ffmpeg结构体以及函数介绍(二)的更多相关文章

  1. ffmpeg结构体以及函数介绍(一)

    本文对在使用ffmpeg进行音视频编解码时使用到的一些函数做一个简单介绍,我当前使用的ffmpeg版本为:0.8.5,因为本人发现在不同的版本中,有些函数名称会有点小改动,所以在此有必要说明下ffmp ...

  2. ffmpeg结构体以及函数介绍(三)

    1 AVPacket typedef struct AVPacket { /** * Presentation timestamp in AVStream->time_base units; t ...

  3. FFmpeg 结构体学习(二): AVStream 分析

    在上文FFmpeg 结构体学习(一): AVFormatContext 分析我们学习了AVFormatContext结构体的相关内容.本文,我们将讲述一下AVStream. AVStream是存储每一 ...

  4. FFmpeg 结构体学习(五): AVCodec 分析

    在上文FFmpeg 结构体学习(四): AVFrame 分析我们学习了AVFrame结构体的相关内容.本文,我们将讲述一下AVCodec. AVCodec是存储编解码器信息的结构体.下面我们来分析一下 ...

  5. FFMPEG结构体分析:AVCodec

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...

  6. FFMPEG结构体分析:AVFrame

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...

  7. FFmpeg 结构体学习(七): AVIOContext 分析

    在上文FFmpeg 结构体学习(六): AVCodecContext 分析我们学习了AVCodec结构体的相关内容.本文,我们将讲述一下AVIOContext. AVIOContext是FFMPEG管 ...

  8. [转载] FFMPEG结构体分析:AVFrame

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...

  9. FFMPEG结构体分析:AVIOContext

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...

随机推荐

  1. JavaSE基础篇—数据类型和运算符

       本章知识点内容概括 数据类型:  1.基本数据类型 数值型 整数类型 byte(128~127),占1个字节的储存间 short(-2^15~2^15-1),占2个字节 int(默认类型-2^3 ...

  2. git 对 Microsoft Word 进行版本控制

    昨天中国高校发生了一件骇人听闻的事情,听说不少高校的校园网用户连接校园网被勒索病毒给黑了,重要文件全部被加密,必须要支付赎金才能解密,具体新闻可以参见:http://www.sohu.com/a/14 ...

  3. Servlet 浅析

    在我们学习Servlet之前,有必要了解一下Web容器的工作模式 我们所有的请求其实都是先到达了web容器,然后才分发给已经注册好的Servlet 请求由Servlet的service方法调用doGe ...

  4. 第一个jdbc

    1. jdbc就是java提供连接数据库的规范.在java中就是一套接口.实现这套接口的这套类就是数据库驱动,用数据库驱动才能连接数据库. 2. Junit是为了方便测试的技术手段,在测试时,一个类中 ...

  5. Go语言入门——dep入门

    本文出现了大量maven的内容,更适合java程序员阅读,如果你的语言做依赖管理的方案与maven差异很大,可能在有些地方会不理解 从很久之前go语言在依赖解决和管理方面方案的匮乏就被不少人诟病.光指 ...

  6. 安装RRDtool 1.4.5

    安装rrdtoolRrdtool安装需要cairo.libxml2.pango库支持,可通过yum安装安装libart_lgpl-devel这个包yum -y install libart_lgpl- ...

  7. 好用的开源库(二)——uCrop 图片裁剪

    最近想要实现图片裁剪的功能,在Github上找到了这个uCrop,star的人挺多的,便是决定入坑,结果长达一个小时的看资料+摸索,终于是在项目中实现了图片裁剪的功能,今天便是来介绍一下uCrop的使 ...

  8. Oracle的一些简单语句

    drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 1.通过查询回收站user_recyclebin获取被删除的表信息, ...

  9. POJ 2826 An Easy Problem?![线段]

    An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12970   Accepted: 199 ...

  10. SqlServer循环 和 批量倒数据

    SqlServer循环语句 declare @i int set @i =1 while(@i<5) begin  set @i = @i+1  insert into text(id,name ...