FFMpeg concat demuxer niebezpieczna nazwa pliku

14

Używam ffmpeg w mojej aplikacji .net do łączenia (łączenia) niektórych krótkich filmów z tym samym kodowaniem oraz wymiarami szerokości i wysokości. Utworzyłem plik txt, jak głosi dokumentacja, i to jest mój txt:

concatTextDirectory to katalog mojego pliku 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'

Oto część argumentu ffmpeg:

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

ale nie ma rezultatu, a poniżej znajduje się raport

ffmpeg rozpoczęto 25.04.2016 o 19:02:30 Raport zapisany do
„ffmpeg-20160425-190230.log” Wiersz polecenia: 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
wersja N-79546-g13406b6 Copyright (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. 1.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Dzielenie linii poleceń. Opcja odczytu „-f” ... dopasowana jako opcja
„f” (format siły) z argumentem „concat”. Opcja odczytu „-i” ...
dopasowana jako plik wejściowy z argumentem
„C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt”. Odczyt opcji „-c” ...
dopasowanej jako opcja „c” (nazwa kodeka) z argumentem „kopiuj”.
Opcja odczytu „C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.mp4” ... dopasowana jako
plik wyjściowy. Czytanie opcji „-y” ... dopasowanej jako opcja „y” (zastępowanie plików wyjściowych) argumentem „1”. Odczyt opcji „-report” ... dopasowany jako opcja „raport” (wygeneruj raport) z argumentem „1”. Zakończono
dzielenie wiersza polecenia. Analiza grupy opcji: globalna.
Zastosowanie opcji y (zastąpienie plików wyjściowych) argumentem 1.

przeanalizował grupę opcji. Analiza grupy opcji: plik wejściowy
C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt. Zastosowanie opcji f (
format wymuszenia ) z argumentem concat. Pomyślnie przeanalizowano grupę opcji. Otwieranie pliku wejściowego: C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt.
[plik @ 00000000027d3ee0] Ustawienie domyślnego pliku białej listy, szyfrowania
[[concat @ 00000000027d3800] Niebezpieczna nazwa pliku
„C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4” [AVIOContext @
0000000000957ca0] Statystyka: 238 bajtów 0 szuka
C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt: Operacja niedozwolona

jak widać na końcu, napisano:

Niebezpieczna nazwa pliku „C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4”

... i Operacja niedozwolona. Próbowałem dodać dodatkowe ukośniki odwrotne lub zmienić ukośniki odwrotne do ukośników w przód lub uciec podwójny dwukropek, dodając podwójny cudzysłów lub pojedynczy cudzysłów na początku lub na końcu concatTextDirectory ... żadna z tych zmian nie przyniosła żadnego rezultatu.

Eftekhari
źródło

Odpowiedzi:

26

Albo biegnij

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

Lub nie używaj bezwzględnych (pełnych) ścieżek w keep.txt

Gyan
źródło
Co nie jest bezpieczne i dlaczego? Przykład w dokumentacji pokazuje ścieżki bezwzględne, więc myślę, że to nie jest problem.
Gustavo Rodrigues
1
ffmpeg.org/pipermail/ffmpeg-devel/2013-F February / 138400.html - powoduje, że ścieżki bezwzględne są traktowane jako niebezpieczne. Nie jestem pewien co do logiki!
jamadagni,
Pomyślałem również, że to powinny być absolutne ścieżki oparte na dokumentach, ale najwyraźniej to nie w porządku. Zrobiłem to tylko nazwy plików i działało świetnie.
Michael Tunnell,
+1 za używanie względnych nazw ścieżek. Wszystkie przykłady są pełne.
pkamb