AVDictionary 的用法简介

AVDictionary 所在的头文件在 libavutil/dict.h,其定义如下:

struct AVDictionary {  int count;  AVDictionaryEntry *elems;
};

其中,AVDictionaryEntry 的定义如下:

typedef struct AVDictionaryEntry {  char *key;  char *value;
} AVDictionaryEntry;

下面就用示例的方式简单介绍下用法

创建一个字典

AVDictionary *d = NULL;

销毁一个字典

av_dict_free(&d);

添加一对 key-value

av_dict_set(&d, "name", "jhuster", 0);
av_dict_set_int(&d, "age", "29", 0);

获取 key 的值

AVDictionaryEntry *t = NULL;t = av_dict_get(d, "name", NULL, AV_DICT_IGNORE_SUFFIX);
av_log(NULL, AV_LOG_DEBUG, "name: %s", t->value);t = av_dict_get(d, "age", NULL, AV_DICT_IGNORE_SUFFIX);
av_log(NULL, AV_LOG_DEBUG, "age: %d", (int) (*t->value));

遍历字典

AVDictionaryEntry *t = NULL;
while ((t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX))) {av_log(NULL, AV_LOG_DEBUG, "%s: %s", t->key, t->value);
}

ffmpeg 参数的传递

ffmpeg 中很多 API 都是靠 AVDictionary 来传递参数的,比如常用的:

int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);

最后一个参数就是 AVDictionary,我们可以在打开码流前指定各种参数,比如:探测时间、超时时间、最大延时、支持的协议的白名单等等,例如:

AVDictionary *options = NULL;
av_dict_set(&options, “probesize”, “4096", 0);
av_dict_set(&options, “max_delay”, “5000000”, 0);
AVFormatContext *ic = avformat_alloc_context();
if (avformat_open_input(&ic, url, NULL, &options) < 0) {LOGE("could not open source %s", url);return -1;
}

那么,我们怎么知道 ffmpeg 的这个 API 支持哪些可配置的参数呢 ?

我们可以查看 ffmpeg 源码,比如 avformat_open_input 是结构体 AVFormatContext 提供的 API,在 libavformat/options_table.h 中定义了 AVFormatContext 所有支持的 options 选项,如下所示:
https://www.ffmpeg.org/doxygen/trunk/libavformat_2options__table_8h-source.html

同理,AVCodec 相关 API 支持的 options 选项则可以在 libavcodec/options_table.h 文件中找到,如下所示:

https://www.ffmpeg.org/doxygen/3.1/libavcodec_2options__table_8h_source.html

FFMPEG AVDictionary 配置参数相关推荐

  1. FFMPEG Tips (5) 如何利用 AVDictionary 配置参数

    本文是我的 FFMPEG Tips 系列的第五篇文章,准备介绍下 ffmpeg 提供的一个非常好用的健值对工具:AVDictionary,特别是对于没有 map 容器的 c 代码,可以充分利用它来配置 ...

  2. 利用 AVDictionary 配置参数

    本文是我的 FFMPEG Tips 系列的第五篇文章,准备介绍下 ffmpeg 提供的一个非常好用的健值对工具:AVDictionary,特别是对于没有 map 容器的 c 代码,可以充分利用它来配置 ...

  3. ffmpeg 如何配置编译

    这么长的文章,是转来的 : ) 1 ffmpeg介绍 ffmpeg是音视频的分离,转换,编码解码及流媒体的完全解决方案,其中最重要的就是libavcodec库.它被mplayer或者xine使用作为解 ...

  4. VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件

    1. 下载和官网教程 下载地址:https://code.visualstudio.com/ 官方教程:https://code.visualstudio.com/docs 2. 安装插件 安装扩展插 ...

  5. chrome java插件_selenium启动Chrome配置参数问题

    每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件.没有收藏.没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器, ...

  6. ActiveMQ5.14.5配置参数详解

    Activemq-.xml 1.加载properties配置参数.下面加载是访问broker的身份信息,即用户名和密码 <bean class="org.springframework ...

  7. 2019年最受欢迎的JVM配置参数是怎样的?

    以下是 JVM 常见十大配置参数: 1.-Xms:初始堆大小.只要启动,就占用的堆大小. 2.-Xmx:最大堆大小.java.lang.OutOfMemoryError:Java heap这个错误可以 ...

  8. Ehcache配置参数详解

    ehcache配置参数详解 <?xml version="1.0" encoding="UTF-8"?><ehcache><dis ...

  9. mysql 参数sql文件_为MySQL的source命令导入SQL文件配置参数

    为MySQL的source命令导入SQL文件配置参数 执行 mysql -uroot -p 输入密码后进入 MySQL 命令提示符 set charset utf8; source /root/xxx ...

最新文章

  1. Html emed 和 object
  2. [吴恩达机器学习笔记]12支持向量机2 SVM的正则化参数和决策间距
  3. ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别
  4. 配置IIS Silverlight运行环境
  5. diag--创建对角矩阵
  6. 应用视觉设计_Day01
  7. python浮点数占多少字节_Python的浮点数损失精度问题
  8. ActiveX: 如何用.inf和.ocx文件生成cab文件
  9. 机器学习经典算法笔记——PCA和梯度上升算法
  10. linux识别科学计数法,Linux下科学计数法(e)转化为数字的方法 [shell中几种数字计算说明]...
  11. 怎样剪立体灯笼_教你怎样做新年DIY剪纸拉花灯笼
  12. mysql中设置字符,MySQL 修改默认字符集
  13. 02矩阵01 ——概念、运算和基本矩阵、对角矩阵、方幂、数量矩阵、转置矩阵、对称矩阵、逆矩阵、奇异矩阵、三角矩阵、矩阵乘积的行列式与秩
  14. 游戏史上最伟大的10位制作人(图)
  15. PHP Yar - 学习/实践
  16. KO88冲销工单结算
  17. 【BP数据预测】基于matlab人工鱼群算法优化BP神经网络数据预测【含Matlab源码 523期】
  18. Qt图片绘图类 QPixmap
  19. AI伪原创工具接口,批量API在线AI伪原创工具
  20. html裁剪字体代码,CSS控制文字换行、裁剪

热门文章

  1. AI框架你只会调包,这种想法很危险!
  2. 综述:基于GAN的图像翻译模型盘点
  3. arXiv热文解读 | 不懂Photoshop如何P图?交给深度学习吧
  4. 直播预告 | 全国高校人工智能人才与科技莫干山论坛直播来袭!
  5. 免费课程 | 云脑机器学习实战训练营,中美大咖携手带你飞!
  6. python异常处理机制的好处_浅谈Python异常处理机制
  7. linux算术表达式求值数据结构,数据结构:算数表达式求值演示
  8. 使用okhttp3执行post请求
  9. C#——《C#语言程序设计》实验报告——继承与多态——电视和电灯委托
  10. Linux——查看硬件配置命令