ffmpeg结构体以及函数介绍(二)

时间:2022-09-04 23:49:11
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 结构体学习&lpar;二&rpar;: AVStream 分析

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

  4. FFmpeg 结构体学习&lpar;五&rpar;: AVCodec 分析

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

  5. FFMPEG结构体分析:AVCodec

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

  6. FFMPEG结构体分析:AVFrame

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

  7. FFmpeg 结构体学习&lpar;七&rpar;: AVIOContext 分析

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

  8. &lbrack;转载&rsqb; FFMPEG结构体分析:AVFrame

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

  9. FFMPEG结构体分析:AVIOContext

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

随机推荐

  1. STM32的优先级NVIC&lowbar;PriorityGroupConfig的理解及其使用

    写作原由:因为之前有对stm32 优先级做过研究,但是没时间把整理的东西发表,最近项目需要2个串口,但是不是两个串口同时使用,只是随机使用其中一个,程序对2个串口的优先级需要配置: 此文思路:“中断优 ...

  2. 如何修改UIButton按下后默认的蓝色效果

    其实有两个简单方法:1.修改xib属性检查器Highlight Tint的值: 2.通过代码修改:btn.tintColor=[UIColor grayColor];或者[btn setTintCol ...

  3. 技术之美&lbrack;程序人生&rsqb;我在IBM实习的日子

    写这篇文章的时候,我已经在IBM正式工作了,看看上一篇博文的发布日期,才发现,我已经将近三个月没有更新博客了,多么惊人!为什么这么久?期间发生了很多事情.最重要的一件就是我大学毕业了!毕业的那么平淡, ...

  4. Spring3&period;2AOP实现需要添加的三个包

    Spring3.2AOP实现需要添加的三个包 http://down.51cto.com/data/1001395 http://down.51cto.com/data/519542

  5. Typora 使用说明

    目录 Typora是一款超简洁的markdown编辑器,具有如下特点: 完全免费,目前已支持中文 跨平台,支持windows,mac,linux 支持数学公式输入,图片插入 极其简洁,无多余功能 界面 ...

  6. sha256&lowbar;transform

    DECLSPEC void sha256_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *dig ...

  7. python解决json序列化时间格式

    简单实例 import json from datetime import datetime from datetime import date info = { "name": ...

  8. pip离线安装软件包

    1. 首先一台主机上安装所有python包,然后运行如下命令下载依赖包: pip freeze > requirements pip download -r requirements 当然可以在 ...

  9. CRNN中英文字符识别

    代码地址如下:http://www.demodashi.com/demo/13870.html 参考GitHub源码:https://github.com/YoungMiao/crnn 应demo大师 ...

  10. uc 调试

    UC浏览器开发者版 目录[隐藏] 1 关于RI 2 准备工作 3 调试方式 相关下载 1 关于RI 目前,在手机上使用浏览器访问网页,无法便捷地进行网页语言调试.手机屏幕相对较小且操作不便,直接在手机 ...