Ich verwende das neueste ffmpeg (3.2.4) unter 64-Bit-Windows 10.
Meine Geräte teilen im Allgemeinen die Dateien auf, die sie auf den SD-Karten speichern, entweder mit einer Dateigrößenbeschränkung von 2G oder 4G.
Vor dem Importieren der Dateien in meine Timeline wäre es sehr praktisch, die logischen Dateien wieder zu einer physischen Datei zu verketten. Auf diese Weise habe ich keine "Teile", die zusammengehalten werden müssen, und das Anwenden von Einstellungen auf einen Clip erfordert nicht, alles in den Fortsetzungssegmenten zu duplizieren.
Natürlich sind Codec und Container stückübergreifend immer identisch.
Ich habe zuerst die WAV-Dateien ausprobiert, die ich vom Zoom H4N-Recorder bekommen habe. Ich habe es versucht:
ffmpeg -i "concat:ste-000.wav|ste-001.wav" -c copy Zoom.wav
und das Ergebnis war wieder nur der erste Teil, ohne Verkettung. Das heißt, die Datei war ca. 2GB groß, aber nicht identisch mit dem ersten Teil. Es kam keine Fehlermeldung. Ich fand es nicht seltsam, dass die Informationen, die zu Beginn des Laufs angezeigt wurden, nur die erste Datei zeigten, da die Teile im Format identisch sein sollen, sodass nur eine erschnüffelt werden muss, um dies herauszufinden.
Die letzten Ausgabezeilen (siehe unten) zeigen, dass die Medienzeit dieselbe ist wie im ersten Teil (1:02).
Also, ich denke, es funktioniert einfach nicht mit WAV. Die Dokumente, die ich gelesen habe, sind ziemlich vage. Aber es gibt auch keinerlei Fehler .
Dann habe ich es mit MOV-Dateien von der Canon-Kamera probiert.
Auch hier gab es keinen Fehler, aber das Ergebnis war nur die (ungefähre) Größe der ersten Datei, die bei diesem Gerät 4 GB beträgt. Und die für die Ausgabedatei angegebene Zeit von etwa 18 Minuten ist nur die des ersten Segments. Es hat sie nicht verkettet!
Stimmt etwas mit der Dokumentation nicht oder ist veraltet? Funktioniert es aus irgendeinem Grund nicht unter Windows (ich würde denken, dass das Einfügen in Anführungszeichen verhindern sollte, dass die Pipe-Zeichen ein Problem darstellen), da es in allen Fällen den Befehl nach der ersten Datei einfach zu ignorieren scheint.
Am Ende habe ich stattdessen den concat-Demuxer verwendet, der gut funktioniert hat, aber nicht so einfach ist, da ich die Dateien nicht einfach auf der Befehlszeile benennen kann.
Warum funktioniert die „einfache“ Form nicht? Genauer gesagt, warum gibt es keinen Fehler, obwohl alle außer der ersten Datei ignoriert werden?
[\\OORT\Media\Video-work\2017\April\29 UNT\original]ffmpeg -i "concat:ste-000.wav|ste-001.wav" -c copy Zoom.wav ffmpeg Version 3.2.4 Copyright (c) 2000-2017 die FFmpeg-Entwickler gebaut mit gcc 6.3.0 (gcc) Aufbau:--disable-static --enable-shared --enable-gpl --enable-version3 --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --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-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus - -enable-librtmp --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-zlib--enable-zlib--enable-zlib libavutil 55.34.101 / 55.34.101 libavcodec 57.64.101 / 57.64.101 libavformat 57.56.101 / 57.56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6.65.100 / 6.65.100 libswscale 4.2.100 / 4.2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Geschätztes Kanallayout für Eingangsstrom Nr. 0.0: Stereo Eingabe #0, wav, von 'concat:ste-000.wav|ste-001.wav': Metadaten: encoded_by : ZOOM Handy Recorder H4n Datum: 2008-01-01 Erstellungszeit: 04:46:57 Zeitbezug: 1652832000 Codierungsverlauf : A=PCM,F=96000,W=24,M=Stereo,T=ZOOM Handy Recorder H4n Dauer: 01:02:06.51, Bitrate: 8696 kb/s Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, Stereo, s32 (24 Bit), 4608 kb/s Ausgabe #0, wav, zu 'Zoom.wav': Metadaten: ITCH : ZOOM Handy Recorder H4n ICRD: 2008-01-01 Codierungsverlauf : A=PCM,F=96000,W=24,M=Stereo,T=ZOOM Handy Recorder H4n Zeitbezug: 1652832000 ISFT: Lavf57.56.101 Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, Stereo (24 Bit), 4608 kb/s Stream-Mapping: Stream #0:0 -> #0:0 (Kopie) Drücken Sie [q] zum Stoppen, [?] für Hilfe Größe = 2096160 kB Zeit = 01:02:06,50 Bitrate = 4608,0 kbit/s Geschwindigkeit = 15,6x Video:0kB Audio:2096160kB Untertitel:0kB andere Streams:0kB globale Header:0kB Muxing-Overhead: 0,000007%
[P:\video-out]\\OORT\Media\Video-work\2017\April\29 UNT\original [\\OORT\Media\Video-work\2017\April\29 UNT\original]ffmpeg -i "concat:MVI_7945.MOV|MVI_7946.MOV" -c copy p:MVI_7945-6.MOV ffmpeg Version 3.2.4 Copyright (c) 2000-2017 die FFmpeg-Entwickler gebaut mit ⋯ ⋮ [mov,mp4,m4a,3gp,3g2,mj2 @ 000000000256cae0] Doppeltes MOOV-Atom gefunden. Übersprungen Eingabe #0, mov,mp4,m4a,3gp,3g2,mj2, aus 'concat:MVI_7945.MOV|MVI_7946.MOV': Metadaten: Erstellungszeit: 2017-04-28T20:08:24.000000Z Hauptmarke : qt Unterversion: 537331968 com.apple.quicktime.make: Canon com.apple.quicktime.model: Canon EOS 70D com.apple.quicktime.rating.user: 0.000000 com.apple.quicktime.Autor: John Dlugosz kompatible_Marken: qt CAEP Dauer: 00:18:25.10, Start: 0.000000, Bitrate: 35549 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29460 kb/s, 23,98 fps, 23,98 tbr , 24.000 TB, 48.000 TB (Standard) Metadaten: Erstellungszeit: 2017-04-28T20:08:24.000000Z Zeitcode: 22:39:33:15 Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, Stereo, s16, 1536 kb/s (Standard) Metadaten: Erstellungszeit: 2017-04-28T20:08:24.000000Z Zeitcode: 22:39:33:15 Stream #0:2(eng): Daten: keine (tmcd / 0x64636D74), 0 kb/s (Standard) Metadaten: Erstellungszeit: 2017-04-28T20:08:24.000000Z Zeitcode: 22:39:33:15 Ausgabe #0, mov, zu 'p:MVI_7945-6.MOV': Metadaten: kompatible_Marken: qt CAEP Hauptmarke : qt Unterversion: 537331968 com.apple.quicktime.make: Canon com.apple.quicktime.model: Canon EOS 70D com.apple.quicktime.rating.user: 0.000000 com.apple.quicktime.Autor: John Dlugosz Encoder: Lavf57.56.101 Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 29460 kb/s , 23,98 fps, 23,98 tbr, 24k tbn, 24k tbc (Standard) Metadaten: Erstellungszeit: 2017-04-28T20:08:24.000000Z Zeitcode: 22:39:33:15 Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, Stereo, 1536 kb/s (Standard) Metadaten: Erstellungszeit: 2017-04-28T20:08:24.000000Z Zeitcode: 22:39:33:15 Stream-Mapping: Stream #0:0 -> #0:0 (Kopie) Stream #0:1 -> #0:1 (Kopie) Drücken Sie [q] zum Stoppen, [?] für Hilfe Frame=26496 fps=519 q=-1.0 Lsize= 4181879kB time=00:18:25.08 bitrate=31000.3kbits/s speed=21.6x Video:3974174kB Audio:207207kB Untertitel:0kB andere Streams:0kB globale Header:0kB Muxing-Overhead: 0,011905%
Das concat-Protokoll ist für die meisten Dateiformate die falsche Wahl. Transportströme wie MPEG-TS sind eines der wenigen Formate, die auf diese Weise verkettet werden können. Alles, was diese Methode tut, ist eine grobe Anhängung jeder Eingabe an die vorherige Eingabe. Daher kann jedes Format, das ein Metadatenelement enthält, nicht auf diese Weise verkettet werden, da sich die Metadaten der anderen Dateien in der Mitte der Ausgabedatei befinden und nicht durch die Metadaten am Anfang der Datei referenziert werden.
Sie sollten stattdessen den concat-Demuxer verwenden. Erstellen Sie eine Textdatei, dh
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
und dann
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output
JDługosz
JDługosz