我在 .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 copy
“C:\Users\mtst\Desktop\Clips\keep\keep.mp4” -y -report ffmpeg
版本 N-79546-g13406b6 版权所有 (c) 2000-2016 FFmpeg
开发人员使用 gcc 5.3.0(GCC)构建 配置:--enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --启用 libass --启用 libbluray --启用 libbs2b --启用 libcaca --启用 libfreetype --启用 libgme --启用 libgsm --启用 libilbc --启用 libmodplug --启用 libmfx --启用 libmp3lame --启用 libopencore-amrnb --启用 libopencore-amrwb --启用 libopenjpeg --启用 libopus --启用 librtmp --启用 libschroedinger --启用 libsnappy --启用 libsoxr --启用 libspeex --启用 libtheora --启用 libtwolame --启用 libvidstab --启用 libvo-amrwbenc --启用 libvorbis --启用 libvpx --启用 libwavpack --启用 libwebp --启用 libx264 --启用 libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 22.100 / 55. 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. 1.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 拆分命令行。正在读取选项“-f”...与选项
“f”(强制格式)和参数“concat”匹配。正在读取选项“-i”...
与输入文件和参数
“C:\Users\mtst\Desktop\Clips\keep\keep.txt”匹配。正在读取选项“-c”...
与选项“c”(编解码器名称)和参数“copy”匹配。正在读取
选项“C:\Users\mtst\Desktop\Clips\keep\keep.mp4”...与
输出文件匹配。正在读取选项“-y”...与选项“y”(覆盖输出文件)和参数“1”匹配。正在读取选项“-report”...与选项“report”(生成报告)和参数“1”匹配。已完成
命令行拆分。正在解析一组选项:全局。
正在应用选项 y(覆盖输出文件)和参数 1。正在应用
选项 report(生成报告)和参数 1。已成功
解析一组选项。解析一组选项:输入文件
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 的开头或结尾添加双引号或单引号……这些更改均未产生任何结果。
答案1
要么运行
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