題 FFMpeg concat demuxer不安全的文件名


我在我的.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 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore -amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora - -enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-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'...作為選項匹配
  參數'concat'的'f'(強制格式)。閱讀選項'-i'......
  與參數匹配作為輸入文件
  “C:\用戶\ mtst \桌面\剪輯\保存\ keep.txt”。閱讀選項'-c'......
  作為選項'c'(編解碼器名稱)與參數'copy'匹配。讀
  選項'C:\ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4'...匹配為
  輸出文件。讀取選項'-y'...匹配為選項'y'(覆蓋   輸出文件)參數為'1'。閱讀選項'-report'...匹配   作為選項“報告”(生成報告),參數為“1”。成品
  拆分命令行。解析一組選項:全球。
  應用帶參數的選項y(覆蓋輸出文件)1。應用
  帶參數的選項報告(生成報告)1。成功
  解析了一組選項。解析一組選項:輸入文件
  C:\ Users \用戶mtst \桌面\剪輯\守\ 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的開頭或結尾添加雙引號或單引號...這些更改都沒有產生任何結果。


14
2018-04-25 14:48


起源




答案:


要么跑

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


23
2018-04-25 15:16



什麼不安全,為什麼?文檔中的示例顯示了絕對路徑,因此我認為這不是問題。 - Gustavo Rodrigues
ffmpeg.org/pipermail/ffmpeg-devel/2013-February/138400.html  - 使絕對路徑被視為不安全。雖然不確定它的邏輯! - jamadagni