ffmpeg文件名含特殊字符引起的问题
一、背景
一个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文件名含特殊字符引起的问题相关推荐
- ajax post提交特殊字符,如何利用jQuery post传递含特殊字符的数据
在jQuery中,我们通常利用$.ajax或$.post进行数据传递处理,但这里通常不能传递特殊字符,如:" 1.准备页面和控制端代码 页面代码如下: $(function() { $(&q ...
- 如何利用jQuery post传递含特殊字符的数据
在jQuery中,我们通常利用$.ajax或$.post进行数据传递处理,但这里通常不能传递特殊字符,如:"<".本文就介绍如何传递这种含特殊字符的数据. 1.准备页面和控制 ...
- 删除文件名含有特殊字符的文件
删除文件名含有特殊字符的文件 当你要删除含有特殊字符的文件名时,有以下几种情况: 使用转义字符.引号 rm -rf \~rm -rf '~'rm -rf "~" 上述命令删除文件名 ...
- 删除文件名含有特殊字符的文件时的意外发现
首先介绍一下删除文件名含有特殊字符的文件的方法: Linux 系统下的文件名长度最多可到256个字符.通常情况下,文件名的字符包括:字母.数字."."(点)."_&quo ...
- oracle 数据库密码 特殊字符,【案例】Oracle用户密码含特殊字符$ 登录数据库时异常案例...
天萃荷净 开发DBA反映,新建用户的密码含有特殊字符$,在sqlplus登录数据库时出现异常 [oracle@ECP-UC-DB1 ~]$ sqlplus / as sysdba SQL*Plus: ...
- Shell获取某个文件夹下的所有文件名(含文件夹)
2019独角兽企业重金招聘Python工程师标准>>> 1. 获取某个文件夹下的所有文件名(含文件夹),并显示 #!/bin/sh #============ get the fil ...
- Firefox火狐下载的文件名含空格时,无法显示完整文件名
当下载含空格的文件时,Firefox会显示不完整的文件名. [vb] view plaincopy Dim filename as String = "File Name.jpg" ...
- DOS下处理含特殊字符[如:]的字符串
这两天闲着蛋疼[等面试通知中...],突然想写一个认证学校亿邮网关的脚本,这样就不用每次输入长长的用户名和密码了.写的时候遇到了一些个大大小小的问题[DOS脚本是这两天现学的,菜鸟中的菜鸟...],比 ...
- php程序中用户名含特殊字符怎么办,php中包含ñ等特殊字符
起初我认为问题是当我从ajax调用返回echo json_encode($row)时,结果是ñ被更改为NULL.但经过测试,我发现问题在此之前存在. 在示例php文件中: $test = " ...
最新文章
- 如何使用SAP零售系统中的LISTING?
- AI攻击AI,升级的网络安全战
- [转]Asp.NET生成静态页面并分页
- coreldraw 复制填充渐变色
- 学习笔记-Map集合的遍历
- java 链表两数相加
- Vue----组件库
- 机器学习读书笔记:假设检验(一)
- 【JavaWeb】最详细的小白笔记!!!
- php行驶证识别代码,涨姿势:行驶证中车辆识别代码一定要知道的事情!!!
- stm32串口通信实验
- 360 浏览器页面兼容 IE7
- 解决Kali linux安装后无法使用键盘输入
- 第三方互联网支付的主要类型
- 双11投影仪推荐,什么样的投影仪才是年轻人最爱的?
- java遍历易百教程_Java PushbackReader类示例
- i2c驱动之i2c-dev驱动
- 猫儿PDF-Word格式转换经验谈
- 光是无限远服务器怎么登陆,sv独立客户端怎么连接服务器(sv独立客户端登录密码)...
- python代码实现技术指标: 转债正股的乖离率