封装API:avformat_alloc_output_context2,avformat_free_context,avformat_new_stream,

avformat_alloc_output_context2

原型

/**

* Allocate an AVFormatContext for an output format.

* avformat_free_context() can be used to free the context and

* everything allocated by the framework within it.

*

* @param ctx pointee is set to the created format context,

* or to NULL in case of failure

* @param oformat format to use for allocating the context, if NULL

* format_name and filename are used instead

* @param format_name the name of output format to use for allocating the

* context, if NULL filename is used instead

* @param filename the name of the filename to use for allocating the

* context, may be NULL

*

* @return >= 0 in case of success, a negative AVERROR code in case of

* failure

*/

int avformat_alloc_output_context2(AVFormatContext **ctx, const AVOutputFormat *oformat,

const char *format_name, const char *filename);

函数作用

Allocate an AVFormatContext for an output format.avformat_free_context() can be used to free the context and everything allocated by the framework within it.

创建一个 avformatContext,这个avformatContext是为了 封装使用的,

最后需要使用 avformat_free_context()函数来释放 avformatContext

参数

AVFormatContext **ctx,

实际开发中 AVFormatContext *avFormatContetx = nullptr;

avformat_alloc_output_context2(&avFormatContetx ,nullptr,nullptr,"a.mp4");

const AVOutputFormat *oformat,

实际开发中传递为NULL

AVOutputFormat* oformat用来指定 avformatContext的 参数 -- (AVOutputFormat* oformat),如果设置为NULL,则会根据第三个参数 format_name 和 第四个参数 filename 决定avformatContext的 AVOutputFormat

format to use for allocating the context, if NULL format_name and filename are used instead

const char *format_name,

指定AVOutputFormat* oformat的name,进而用来指定 avformatContext的 参数 -- (AVOutputFormat* oformat),如果为null,会根据第四个参数filename 决定avformatContext的 AVOutputFormat

the name of output format to use for allocating the context, if NULL filename is used instead

const char *filename

打开那个文件,此filename一般会有后缀名,例如 a.mp4。

返回值

return >= 0 in case of success, a negative AVERROR code in case of failure

avformat_free_context

原型

/**

* Free an AVFormatContext and all its streams.

* @param s context to free

*/

void avformat_free_context(AVFormatContext *s);

函数作用

将 AVFormatContext* 指向的空间全部释放。

但是 不会将自己置为nullptr

因此使用时:一般会同时将 avformatContext设置为nullptr

avformat_free_context(avformatContext);

avformatContext = nullptr;

参数

返回值

avformat_new_stream

原型

/**

* Add a new stream to a media file.

*

* When demuxing, it is called by the demuxer in read_header(). If the

* flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also

* be called in read_packet().

*

* When muxing, should be called by the user before avformat_write_header().

*

* User is required to call avformat_free_context() to clean up the allocation

* by avformat_new_stream().

*

* @param s media file handle

* @param c unused, does nothing

*

* @return newly created stream or NULL on error.

*/

AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c);

函数作用

new一个avstream,

参数

AVFormatContext *s,

const AVCodec *c

创建的avstream是 那种avcodec的。

返回值

成功返回一个 avstream *, 失败返回nullptr

相关推荐
王元_SmallA4 分钟前
Redis Desktop Manager(Redis可视化工具)安装
java·后端
ᐇ9597 分钟前
Java HashMap深度解析:数据结构、原理与实战指南
java·开发语言·数据结构
好好研究10 分钟前
Spring框架 - 开发方式
java·后端·spring
武子康27 分钟前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
QT 小鲜肉30 分钟前
【个人成长笔记】在 Linux 系统下撰写老化测试脚本以实现自动压测效果(亲测有效)
linux·开发语言·笔记·单片机·压力测试
程序员龙一36 分钟前
C++之static_cast关键字
开发语言·c++·static_cast
yue00843 分钟前
C# 分部类读取学生信息
开发语言·c#
奶茶树1 小时前
【C++/STL】map和multimap的使用
开发语言·c++·stl
聪明努力的积极向上1 小时前
【C#】事件简单解析
开发语言·c#
2301_796512521 小时前
Rust编程学习 - 为什么说Cow 代表的是Copy-On-Write, 即“写时复制技术”,它是一种高效的 资源管理手段
java·学习·rust