一、背景

一个png图片,文件名为 “%xx{xx.png”这种形式,在ffmpeg的avformat_find_stream_info执行后,没有报错,但是AVFormat对象中没有获取到文件的宽高信息

二、分析

1.用av_log_set_callback设置日志回调,打印出日志信息

static void log_callback_report(void* ptr, int level, const char* fmt, va_list vl)
{va_list vl2;char line[1024];static int print_prefix = 1;va_copy(vl2, vl);av_log_default_callback(ptr, level, fmt, vl);av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);va_end(vl2);
}

2.从日志信息中发现了报错

2021-10-09 11:34:19 541 0xbbf1c88 [image2 @ 297a57c0] Could not open file : C:\Users\EDZ\Desktop\

3.分析ffmpeg源码,找到导致报错的函数为av_get_frame_filename,这个函数最终的实现为int av_get_frame_filename2(char *buf, int buf_size, const char *path, int number, int flags),可以在libavformat/utils.c文件中找到它。在这个函数中将“%”当成了一种转义字符来处理,因此正确的文件名就被改动了,后续的文件操作就拿不到正确的文件名了

三、结论

1.avformat_find_stream_info函数的返回值逻辑不合理,在有报错情况下应当反映在返回值中
2.文件名尽量避免“%”这种特殊字符,暂时没找到比较合理的解决方法

ffmpeg文件名含特殊字符引起的问题相关推荐

  1. ajax post提交特殊字符,如何利用jQuery post传递含特殊字符的数据

    在jQuery中,我们通常利用$.ajax或$.post进行数据传递处理,但这里通常不能传递特殊字符,如:" 1.准备页面和控制端代码 页面代码如下: $(function() { $(&q ...

  2. 如何利用jQuery post传递含特殊字符的数据

    在jQuery中,我们通常利用$.ajax或$.post进行数据传递处理,但这里通常不能传递特殊字符,如:"<".本文就介绍如何传递这种含特殊字符的数据. 1.准备页面和控制 ...

  3. 删除文件名含有特殊字符的文件

    删除文件名含有特殊字符的文件 当你要删除含有特殊字符的文件名时,有以下几种情况: 使用转义字符.引号 rm -rf \~rm -rf '~'rm -rf "~" 上述命令删除文件名 ...

  4. 删除文件名含有特殊字符的文件时的意外发现

    首先介绍一下删除文件名含有特殊字符的文件的方法: Linux 系统下的文件名长度最多可到256个字符.通常情况下,文件名的字符包括:字母.数字."."(点)."_&quo ...

  5. oracle 数据库密码 特殊字符,【案例】Oracle用户密码含特殊字符$ 登录数据库时异常案例...

    天萃荷净 开发DBA反映,新建用户的密码含有特殊字符$,在sqlplus登录数据库时出现异常 [oracle@ECP-UC-DB1 ~]$ sqlplus / as sysdba SQL*Plus: ...

  6. Shell获取某个文件夹下的所有文件名(含文件夹)

    2019独角兽企业重金招聘Python工程师标准>>> 1. 获取某个文件夹下的所有文件名(含文件夹),并显示 #!/bin/sh #============ get the fil ...

  7. Firefox火狐下载的文件名含空格时,无法显示完整文件名

    当下载含空格的文件时,Firefox会显示不完整的文件名. [vb] view plaincopy Dim filename as String = "File Name.jpg" ...

  8. DOS下处理含特殊字符[如:]的字符串

    这两天闲着蛋疼[等面试通知中...],突然想写一个认证学校亿邮网关的脚本,这样就不用每次输入长长的用户名和密码了.写的时候遇到了一些个大大小小的问题[DOS脚本是这两天现学的,菜鸟中的菜鸟...],比 ...

  9. php程序中用户名含特殊字符怎么办,php中包含ñ等特殊字符

    起初我认为问题是当我从ajax调用返回echo json_encode($row)时,结果是ñ被更改为NULL.但经过测试,我发现问题在此之前存在. 在示例php文件中: $test = " ...

最新文章

  1. 如何使用SAP零售系统中的LISTING?
  2. AI攻击AI,升级的网络安全战
  3. [转]Asp.NET生成静态页面并分页
  4. coreldraw 复制填充渐变色
  5. 学习笔记-Map集合的遍历
  6. java 链表两数相加
  7. Vue----组件库
  8. 机器学习读书笔记:假设检验(一)
  9. 【JavaWeb】最详细的小白笔记!!!
  10. php行驶证识别代码,涨姿势:行驶证中车辆识别代码一定要知道的事情!!!
  11. stm32串口通信实验
  12. 360 浏览器页面兼容 IE7
  13. 解决Kali linux安装后无法使用键盘输入
  14. 第三方互联网支付的主要类型
  15. 双11投影仪推荐,什么样的投影仪才是年轻人最爱的?
  16. java遍历易百教程_Java PushbackReader类示例
  17. i2c驱动之i2c-dev驱动
  18. 猫儿PDF-Word格式转换经验谈
  19. 光是无限远服务器怎么登陆,sv独立客户端怎么连接服务器(sv独立客户端登录密码)...
  20. python代码实现技术指标: 转债正股的乖离率

热门文章

  1. C#侧调用Python脚本 IronPython
  2. QuotesPlugin for WLW居然被SOFTPEDIA收录了
  3. 面试官:介绍下Spring MVC
  4. SurfaceFlinger的dump信息详解
  5. php 箭头符号怎么打开,php箭头的用法是什么?
  6. 研发转FAE,要想清楚
  7. Mybatis逆向工程、Quartz框架的定时任务管理详解、Cron表达式
  8. 常用调度工具Oozie、Azkaban、Airflow总结
  9. 人生三大陷阱:大意、轻信、贪婪
  10. Android学习之ComponentName的使用