当前位置: 首页 > article >正文

ffmpeg学习发现av_err2str使用报错问题

最近在学习ffmpeg,照着书上敲代码,发现有个av_err2str错误.书上环境是linux系统的,我使用的windows系统编译器使用的是VS2015.可能是微软的编译器和GCC编译器不太一样这个宏函数用不了.

 会报这个错误.

网上找资料超级少,找到一个类似的按照上面修改ffmpeg代码.上面的错误没有了会有新的错误.

ffmpeg错误总结_av_err2str_挥手致何意的博客-CSDN博客

修改完以后编译会报这个错误:

 

说av_error已经存在,但是实际上是不存在的, 我想应该是上面的那个变量char av_error[AV_ERROR_MAX_STRING_SIZE] = { 0 };定义在头文件里了.每个源文件添加一次头文件,这个变量就会新建一个,所以编译就会出现这个问题.

其实最简单的解决方法就是在这个变量前添加static

static char av_error[AV_ERROR_MAX_STRING_SIZE] = { 0 };

这么定义就可以了.因为static是静态的存储位置在静态空间,不在栈空间,而且只在本文件中可见.所以就可以了.为了实现兼容性,可以使用预编译

#if defined(_MSC_VER)
static char av_error[AV_ERROR_MAX_STRING_SIZE] = { 0 };
#define av_err2str(errnum) \
    av_make_error_string(av_error, AV_ERROR_MAX_STRING_SIZE, errnum)
#elif
#define av_err2str(errnum) \
    av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum)
#endif

如果是使用VS就使用上面的代码,linux GCC可以使用下面的代码,不清楚为什么ffmpeg维护人员没有发现这个bug,我要是提交这个代码也不知道会不会被采用.

时间:2023.04.22

FFmpeg 当前版本:         Version: 5.1.2-full_build-www.gyan.dev

希望以后的版本会把这个bug给修复了.


http://www.kler.cn/a/13981.html

相关文章:

  • java8新方法
  • MySQL:JDBC 详细内容
  • QT QPainter绘图之视口和窗口简介
  • 【通过蓝牙滚动文本和Android控制】
  • CSDN 编程竞赛四十六期题解
  • java md5 sha256
  • 一分钟了解美国棒球体系·棒球1号位
  • LVS负载均衡之DR模式
  • 汽车音响进入致臻全景声时代,丹拿瞄准了两大行业痛点
  • 大学生蓝桥杯
  • 算法刷题|139.单词拆分、多重背包
  • 购物 · 礼物
  • 【Buildroot】基础知识:目录、根文件系统目录覆盖、编译性能分析(编译时间、目标尺寸、包依赖图)
  • YOLOv7+单目实现三维跟踪(python)
  • Java双亲委派和类加载器
  • springboot+vue小区物业管理系统(源码+文档)
  • XML 简介
  • 数据仓库与数据建模理论
  • Linux系统应用编程(五)Linux网络编程(上篇)
  • 大四的告诫