ffmpeg之avformat_alloc_output_context2

这篇具有很好参考价值的文章主要介绍了ffmpeg之avformat_alloc_output_context2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

函数原型:

int avformat_alloc_output_context2(AVFormatContext **ctx, const AVOutputFormat *oformat,
                                   const char *format_name, const char *filename);

功能:

        查找根据format_name或者filename或者oformat输出类型,并且初始化ctx结构。

参数:

        ctx:AVFormatContext结构体,ffmpeg核心结构体,会在函数内部给ctx分配AVFormatContext空间并初始化。

        oformat:指定输出格式的 AVOutputFormat 结构体指针。可以使用 NULL,此时将根据         format_name 自动选择输出格式。

        format_name:输出格式名称

        filename:输出文件/URL名称

返回值:

        成功:0;失败:非0

工作流程:

1. 首先判断oformat是否为NULL:

2. 如果oformat不为NULL:

        直接初始化ctx结构((*ctx)->oformat, 保存filename到(*ctx)->url);

        如果oformat为NULL:

        format_name不为NULL:会循环查找muxer_list结构成员的name成员是否与format_name相同;

        filename不为NULL:会循环查找muxer_list结构成员的extensions成员与filename的后缀是否相同;

        找到后初始化ctx结构((*ctx)->oformat, 保存filename到(*ctx)->url); 如果没找到的话释放分配的ctx空间,返回错误码!

        有关muxer_list的信息参考后续代码;

注意:

        那么会产生一个问题:如果format_name和filename都不为NULL呢?当然如果format_name = "flv"和filename="file.flv"这是没问题的,肯定找到同一个结构;那么如果format_name = "flv"和filename="file.mp4"呢?到底以谁为准呢?

    文章来源地址https://www.toymoban.com/news/detail-833574.html

到了这里,关于ffmpeg之avformat_alloc_output_context2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • avformat_open_input 调用失败的原因

    avformat_open_input 是 FFmpeg 库中的一个函数,用于打开音视频文件或网络流并进行解封装操作,返回值为一个表示打开的文件或流的 AVFormatContext 结构体指针。如果 avformat_open_input 失败,可能是如下的原因: 文件路径或 URL 错误: avformat_open_input 的第一个参数是文件路径或 URL,如

    2024年02月09日
    浏览(56)
  • kmem_cache_alloc

    /**  * kmem_cache_alloc - Allocate an object  * @cachep: The cache to allocate from.  * @flags: See kmalloc().  *  * Allocate an object from this cache.  The flags are only relevant  * if the cache has no available objects.  *  * Return: pointer to the new object or %NULL in case of error  */ void * kmem_cache_alloc (struct kmem_cache *cachep, gfp_

    2024年02月10日
    浏览(23)
  • dma_alloc_wc

    static inline void * dma_alloc_wc (struct device *dev, size_t size,                  dma_addr_t *dma_addr, gfp_t gfp) {     unsigned long attrs = DMA_ATTR_WRITE_COMBINE;     if (gfp __GFP_NOWARN)         attrs |= DMA_ATTR_NO_WARN;     return dma_alloc_attrs (dev, size, dma_addr, gfp, attrs); } void * dma_alloc_attrs (struct device

    2024年02月16日
    浏览(24)
  • HTML <output> 标签

    执行计算然后在 output 元素中显示结果: 元素 Chrome IE Firefox Safari Opera output 10.0 13.0 4.0 5.1 11.0 Firefox, Chrome, Safari 以及 Opera 支持 output 标签。 注释:Internet Explorer 8 以及更早的版本不支持 output 标签。 output 标签定义不同类型的输出,比如脚本的输出。 output 标签是 HTML 5 中的新标

    2024年02月16日
    浏览(26)
  • webpack之输出(output)

    可以通过配置  output  选项,告知 webpack 如何向硬盘写入编译文件。注意,即使可以存在多个  entry  起点,但只能指定一个  output  配置。 在 webpack 配置中, output  属性的最低要求是,将它的值设置为一个对象,然后为将输出文件的文件名配置为一个 output.filename 此配置将

    2024年01月18日
    浏览(28)
  • output delay 约束

    特别注意:在源同步接口中,定义接口约束之前,需要用create_generated_clock 先定义送出的随路时钟。 FPGA发送数据和时钟的关系是不是可以通过示波器测试得知?个人觉得方法一已知下游器件的建立和保持时间约束比较方便。 我怎么知道输出的skew?是预估一个值吗? output d

    2024年02月15日
    浏览(46)
  • LangChain中的output parsers

            生成语言模型由于生成不可控,所以生成的自然语言是非结构话的文本。而prompt的出现使得用户可以将期望的输出文本格式进行约束和规范。LangChain中的output parsers模块可以使模型输出的期望的结构化文本,使用的正是prompt操作。         LangChain中的output parsers一共

    2024年02月16日
    浏览(38)
  • go 获取terraform output输出

    在Go中,你可以使用 os/exec 包来运行外部命令,如Terraform。以下是一个简单的Go函数,用于获取Terraform输出并打印它们: 确保你有Terraform安装并配置在你的系统PATH中。此代码段假设你的Terraform状态是已经plan和apply的,因此它可以获取输出。你需要修改 path 变量以指向你的Ter

    2024年04月09日
    浏览(25)
  • -bash: fork: Cannot allocate memory处理

    /proc/sys/kernel/pid_max是一个系统内核参数,用于设置系统可以分配的最大进程ID(PID)数。每个新创建的进程都会被分配一个唯一的PID,该值决定了系统能够支持的最大进程数量。 /etc/security/limits.d/90-nproc.conf是一个配置文件,用于设定每个用户或用户组在系统中可同时运行的最

    2024年02月13日
    浏览(40)
  • altium designer OUTPUT FILE Analysis

    设计完PCB后,会导出相关光绘文件发给板厂打板,针对AD导出的各个光绘文件,我记录下了它们各个文件对应的层如下: GTL: Top Layer 顶层线路 GBL: Bottom Layer 底层线路 G1,G2… : Mid Layer 1, 2, … 中间信号层 GP1,GP2…: Internal Plane Layer 1, 2, …内电层 GTO: Top Overlay 顶层丝钱层

    2024年02月17日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包