Der Versuch, ein paar mts-Dateien in eine große mp4-Datei umzuwandeln:
[email protected]:/mnt/backupsystem/archive2/Videos/20151222/PRIVATE/AVCHD/BDMV$ ~/bin/ffmpeg-git-20160817-64bit-static/ffmpeg -v info -f concat -i <(find STREAM -name '*' -printf "file '$PWD/%p'\n") -deinterlace -r 25 -s hd720 -c:v libx264 -crf 23 -acodec copy -strict -2 ~/tmp/Videos/20151222.mp4
ffmpeg version N-81364-gf85842b-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.1 (Debian 5.4.1-1) 20160803
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --enable-libsoxr --enable-frei0r --enable-libfribidi --disable-indev=sndio --disable-outdev=sndio --enable-librtmp --enable-libmfx --enable-libzimg --cc=gcc-5
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 53.100 / 57. 53.100
libavformat 57. 46.101 / 57. 46.101
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 51.100 / 6. 51.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[concat @ 0x56054a0] Unsafe file name '/mnt/backupsystem/archive2/Videos/20151222/PRIVATE/AVCHD/BDMV/STREAM'
/dev/fd/63: Operation not permitted
Irgendwelche Ideen, was hier schief geht? Was bedeutet der Begriff "unsichere Datei" in diesem Zusammenhang?
Die Antwort von @Mulvya (danke!) Funktioniert: "Add -safe 0
Vor -i
". Dann erschien ein anderes Problem mit find STREAM -name '*' -printf "file '$PWD/%p'\n"
, das den leeren Pfad als ersten Eintrag zurückgibt. Geändert für for f in ./*.wav; do echo "file '$PWD/$f'"; done
(siehe https://trac.ffmpeg.org/wiki/Concatenate ) und jetzt scheint es zu funktionieren. Hurra!
Um zu beantworten, warum, von https://ffmpeg.org/ffmpeg-all.html#Options-35 :
Dieser Demuxer akzeptiert die folgende Option:
safe
Wenn auf 1 gesetzt, lehnen Sie unsichere Dateipfade ab. Ein Dateipfad gilt als sicher, wenn er keine Protokollspezifikation enthält und relativ ist. Alle Komponenten enthalten nur Zeichen aus dem portablen Zeichensatz (Buchstaben, Ziffern, Punkte, Unterstriche und Bindestriche) und haben am Anfang einer Komponente keinen Punkt.Bei 0 wird jeder Dateiname akzeptiert.
Der Standardwert ist 1.
-1 entspricht 1, wenn das Format automatisch geprüft wurde, und 0, wenn nicht.
Es stellte sich heraus, dass find .
Ein ./
Vor die Datei stellt. Siehe So entfernen Sie führende "./" in Unix "find"? für Lösungen, wenn Sie -safe 0
Nicht verwenden möchten.
Über Antwort ist völlig richtig, ich zeige Ihnen nur Befehl, damit Sie -safe 0 an keiner anderen Stelle setzen.
ffmpeg.exe -f concat -safe 0 -i "clips.txt" -c copy "video.mp4"
In meinem Fall verursacht doppelte Anführungszeichen den Fehler.
Ich benutze ffmpeg -f concat -i concat.txt -c copy output.m4a
Befehl, den der concat.txt
enthält eine Liste der zu überwachenden Eingabedateien.
nsicherer Dateiname (doppelte Anführungszeichen):
file "song1.m4a"
file "song2.m4a"
Sicherer Dateiname (einfache Anführungszeichen):
file 'song1.m4a'
file 'song2.m4a'
sicherer Dateiname (ohne Anführungszeichen):
file song1.m4a
file song2.m4a
Beachten Sie, dass einfache Anführungszeichen und ohne Anführungszeichen nur funktioniert, wenn kein Leerzeichen ('/' ist in Ordnung), Sie brauchen immer noch -safe 0
wenn der Dateiname/Pfad Leerzeichen enthält.