FFMpeg concat demuxer unsicherer Dateiname


14

Ich verwende ffmpeg in meiner .net-Anwendung, um einige kurze Videos mit der gleichen Codierung sowie den gleichen Abmessungen für Breite und Höhe zusammenzuführen (zu verketten). Ich habe eine txt-Datei erstellt, wie in der Dokumentation angegeben, und dies ist mein txt:

concatTextDirectory ist das Verzeichnis meiner txt-Datei.

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'

Und dies ist ein Teil des ffmpeg-Arguments:

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

aber es hat kein ergebnis und unten ist der bericht

ffmpeg gestartet am 2016-04-25 um 19:02:30 Bericht geschrieben in
"ffmpeg-20160425-190230.log" Befehlszeile: ffmpeg.exe -f concat -i
"C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt "-c Kopie Ausgabedatei. Leseoption '-y' ... entspricht der Option 'y' (überschreibe Ausgabedateien) mit dem Argument '1'. Leseoption '-report' ... Als Option 'report' (Bericht erstellen) mit Argument '1' abgeglichen. Fertig
" C: \ Benutzer \ mtst \ Desktop \ Clips \ keep \ keep.mp4 "-y -report ffmpeg
version N-79546-g13406b6 Copyright (c) 2000-2016 das 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 Aufteilen der Kommandozeile. Leseoption '-f' ... stimmt als Option überein
'f' (Force-Format) mit dem Argument 'concat'. Leseoption '-i' ...
entspricht als Eingabedatei dem Argument
'C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt'. Leseoption '-c' ...
entspricht der Option 'c' (Codec-Name) mit dem Argument 'copy'. Lesen
Option 'C: \ Users \ MTST \ Desktop \ Clips \ halten \ keep.mp4' ... als ein aufeinander abgestimmtes Spaltung der Kommandozeile. Analysieren einer Gruppe von Optionen: global. Anwenden der Option y (Überschreiben von Ausgabedateien) mit Argument 1. Anwenden des Optionsberichts (Generieren eines Berichts) mit Argument 1. Analysieren einer Optionsgruppe erfolgreich. Analysieren einer Optionsgruppe: Eingabedatei C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt. Anwenden der Option f (erzwingen






Format) mit Argument concat. Analysierte erfolgreich eine Gruppe von Optionen. Öffnen einer Eingabedatei: C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt.
[file @ 00000000027d3ee0] Festlegen der Standard-Whitelist "file,
crypto " [concat @ 00000000027d3800] Name der unsicheren Datei
"C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4" [AVIOContext @
0000000000957ca0] Statistik: 238 Byte gelesen, 0 sucht nach
C: \ Users \ mtst \ Desktop \ Clips \ keep \ keep.txt: Vorgang nicht zulässig

Wie Sie am Ende sehen können, heißt es:

Unsicherer Dateiname 'C: \ Users \ mtst \ Desktop \ Clips \ keep \ a1.mp4'

... und Bedienung nicht erlaubt. Ich habe versucht, zusätzliche umgekehrte Schrägstriche hinzuzufügen oder umgekehrte Schrägstriche zu ändern, um Schrägstriche weiterzuleiten, oder doppelte Anführungszeichen oder einfache Anführungszeichen am Anfang oder Ende von concatTextDirectory einzufügen ... keine dieser Änderungen führte zu irgendwelchen Ergebnissen.

Antworten:


26

Entweder laufen

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

Oder verwenden Sie keine absoluten (vollständigen) Pfade in keep.txt


Was ist nicht sicher und warum? Das Beispiel in der Dokumentation zeigt absolute Pfade, daher denke ich, dass das nicht das Problem ist.
Gustavo Rodrigues

1
ffmpeg.org/pipermail/ffmpeg-devel/2013-February/138400.html - bewirkt, dass absolute Pfade als unsicher behandelt werden. Bin mir aber nicht sicher, was die Logik angeht!
Jamadagni

Ich dachte auch, es sollte sich um absolute Pfade handeln, die auf Dokumenten basieren, aber anscheinend stimmt das nicht. Ich habe es nur mit Dateinamen gemacht und es hat super funktioniert.
Michael Tunnell

+1 für die Verwendung relativer Pfadnamen. Alle Beispiele zeigen voll.
pkamb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.