FFMpeg concat demuxer不安全文件名


14

我在.net应用程序中使用ffmpeg合并(连接)一些具有相同编码以及宽度和高度尺寸的短视频。我已经按照文档中的说明创建了一个txt文件,这是我的txt:

concatTextDirectory是我的txt文件的目录。

file 'C:\Users\mtst\Desktop\Clips\keep\a1.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a2.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a3.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a4.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a5.mp4'

这是ffmpeg参数部分:

ffmpeg.StartInfo.Arguments = "/c ffmpeg.exe -f concat -i " + concatTextDirectory + " -c copy " + videoOut + " -y -report";

但没有结果,下面是报告

ffmpeg于2016-04-25 19:02:30启动,报告已写入
“ ffmpeg-20160425-190230.log”命令行:ffmpeg.exe -f concat -i
“ C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt” -c复制
“ C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4” -y-报告ffmpeg
版本N-79546-g13406b6版权所有(c)2000-2016 FFmpeg
22.100 libavcodec 57. 35.100 / 57. 35.100 libavformat 57. 34.102 / 57. 34.102 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 44.100 / 6. 44.100 libswscale 4. 1.100 / 4.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100拆分命令行。读取选项'-f'...作为选项匹配
参数为“ concat”的“ f”(强制格式)。读取选项'-i'...
作为输入文件与参数
'C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt'匹配。读取选项'-c'...
与参数'copy'匹配为选项'c'(编解码器名称)。读取
选项'C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4'...已匹配为
输出文件。读取选项'-y'...与参数'1'匹配为选项'y'(覆盖输出文件)。读取选项'-report'...与参数'1'匹配为选项'report'(生成报告)。完成
拆分命令行。解析一组选项:global。
对参数1应用选项y(覆盖输出文件)。

解析了一组选项。解析一组选项:输入文件
C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt。将选项f(强制
格式)与参数concat一起应用。成功解析了一组选项。打开输入文件:C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt。
[file @ 00000000027d3ee0]设置默认白名单'file,crypto'
[concat @ 00000000027d3800]不安全的文件名
'C:\ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4'[AVIOContext @
0000000000957ca0]统计信息:读取238个字节, 0搜索
C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt:不允许操作

正如您在最后看到的那样:

不安全的文件名'C:\ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4'

...和不允许的操作。我尝试添加额外的反斜杠或将反斜杠更改为正斜杠或转义双冒号,在concatTextDirectory的开头或结尾处添加双引号或单引号...这些更改均未产生任何结果。

Answers:


26

无论运行

ffmpeg.exe -f concat -safe 0 -i
"C:\Users\mtst\Desktop\Clips\keep\keep.txt" -c copy
"C:\Users\mtst\Desktop\Clips\keep\keep.mp4

或不要在其中使用绝对(完整)路径 keep.txt


什么不安全,为什么?文档中的示例显示了绝对路径,所以我认为这不是问题。
古斯塔沃·罗德里格斯

1
ffmpeg.org/pipermail/ffmpeg-devel/2013-February/138400.html –导致绝对路径被视为不安全。虽然不确定它的逻辑!
jamadagni

我还认为这应该是基于文档的绝对路径,但显然这是不对的。我只是将其命名为文件名,所以效果很好。
迈克尔Tunnell

+1用于使用相对路径名。所有示例都显示完整。
pkamb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.