2014-10-08 112 views
6

Ich versuche, einige mp4-Dateien nacheinander zu verketten. Ich führen Sie die folgenden Schritte aus:ffmpeg 2.4.2 verketten mp4-Dateien

ffmpeg -i concat:1.mp4\|2.mp4\|3.mp4\|4.mp4 -c copy final_output.mp4 

aber immer die Meldung "[mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x148d420] Gefunden MOOV Atom dupliziert Übersprungene es."

Hier ist die Ausgabe:

ffmpeg version 2.4.2 Copyright (c) 2000-2014 the FFmpeg developers 
    built on Oct 6 2014 17:33:05 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) 
    configuration: --prefix=/opt/ffmpeg --libdir=/opt/ffmpeg/lib/ --enable-shared --enable-avresample --disable-stripping --enable-gpl --enable-version3 --enable-runtime-cpudetect --build-suffix=.ffmpeg --enable-postproc --enable-x11grab --enable-libcdio --enable-vaapi --enable-vdpau --enable-bzlib --enable-gnutls --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libfaac --enable-libvo-aacenc --enable-nonfree --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfdk_aac --enable-libopus --enable-pthreads --enable-zlib --enable-libvpx --enable-libfreetype --enable-libpulse --enable-debug=3 
    libavutil  54. 7.100/54. 7.100 
    libavcodec  56. 1.100/56. 1.100 
    libavformat 56. 4.101/56. 4.101 
    libavdevice 56. 0.100/56. 0.100 
    libavfilter  5. 1.100/5. 1.100 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 0.100/3. 0.100 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 0.100/53. 0.100 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x148d420] Found duplicated MOOV Atom. Skipped it 
    Last message repeated 2 times 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'concat:1.mp4|2.mp4|3.mp4|4.mp4': 
    Metadata: 
    encoder   : Lavf56.4.101 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    Duration: 00:00:10.00, start: 0.000000, bitrate: 741 kb/s 
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1/0x31637661), yuv422p, 640x480, 177 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) 
    Metadata: 
     handler_name : VideoHandler 
Output #0, mp4, to 'final_output.mp4': 
    Metadata: 
    compatible_brands: isomiso2avc1mp41 
    major_brand  : isom 
    minor_version : 512 
    encoder   : Lavf56.4.101 
    Stream #0:0(und): Video: h264 ([33][0][0][0]/0x0021), yuv422p, 640x480, q=2-31, 177 kb/s, 30 fps, 15360 tbn, 15360 tbc (default) 
    Metadata: 
     handler_name : VideoHandler 
Stream mapping: 
    Stream #0:0 -> #0:0 (copy) 
Press [q] to stop, [?] for help 
frame= 300 fps=0.0 q=-1.0 Lsize=  221kB time=00:00:09.90 bitrate= 183.0kbits/s  
video:217kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.995090% 

Als Ergebnis habe ich Ausgabedatei, die nur die 1.mp4 enthält.

Ich habe gehört, dass mp4 nicht ohne Neucodierung verkettet werden kann. Aber eigentlich habe ich dieses Problem (Dupliziertes MOOV-Atom gefunden) für jedes Format, das ich ausprobiert habe (ts, mpg und etc.).

Bitte lassen Sie mich wissen, was hier falsch ist. Weil es scheint, als hätte niemand das selbe Problem wie ich.

Vielen Dank im Voraus.

Antwort

1

Ich habe die Lösung gefunden, was für mich funktioniert:

ffmpeg -f concat -i ffmpeg-sound.txt -c copy output-sound.mp4 

Es ist ziemlich merkwürdig, warum die anderen nicht funktioniert, weil es mir scheint, dass dies fast gleich ist.

+3

Ihr Befehl in Ihrer Frage verwendet das [concat-Protokoll] (http://ffmpeg.org/ffmpeg-protocols.html#concat). Ihr Befehl in Ihrer Antwort verwendet den [concat demuxer] (http://ffmpeg.org/ffmpeg-formats.html#concat). [Diese sind anders] (http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f). – LordNeckbeard

+0

@LordNeckbeard Danke für den Hinweis auf den Unterschied. Ich habe den Unterschied nicht vorher gemacht ... http://www.ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f – Sun

+0

was ist ffmpeg-sound.txt? – SpaceDog

3

Sie antworten ist korrekt, aber nicht vollständig. Die Lösung besteht darin, ein Concat-Skript zu verwenden, das so aussieht, wie Sie es getan haben. Die „ffmpeg-sound.txt“ in Ihrer Antwort wird wie folgt aussehen:

file 1.mp4 
file 2.mp4 
file 3.mp4 
file 4.mp4 

Mit dieser Datei stellen Sie sie als Eingabe für ffmpeg das concat Format:

ffmpeg -f concat -i ffmpeg-sound.txt -c copy final_output.mp4 

Danke um die Lösung zu posten. Ich hoffe, diese Klarstellung des Eingabedateiformats hilft der nächsten Person.