2014-10-08 12 views
6

Sto cercando di concatenare alcuni file mp4 uno dopo l'altro. Eseguo il seguente:ffmpeg 2.4.2 concatenare file mp4

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

Ma sempre il messaggio "[MOV, MP4, M4A, 3GP, 3G2, mj2 @ 0x148d420] Trovato duplicato MOOV Atom saltato."

Ecco l'output:

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% 

Come risultato, ho un file di output, che contiene solo 1.mp4.

Ho sentito parlare di mp4 non può essere concatenato senza ricodifica. Ma in realtà ho questo problema (trovato duplicato MOOV Atom) per qualsiasi formato, che ho provato (ts, mpg e così via).

Per favore fatemi sapere cosa c'è che non va qui. Perché sembra che nessuno abbia lo stesso problema di me.

Grazie in anticipo.

risposta

1

ho trovato la soluzione, che lavora per me:

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

E 'piuttosto strano perché gli altri non ha funzionato, perché mi sembra che questo è quasi la stessa.

+3

Il comando nella tua domanda utilizza il [protocollo concat] (http://ffmpeg.org/ffmpeg-protocols.html#concat). Il tuo comando nella tua risposta usa [concat demuxer] (http://ffmpeg.org/ffmpeg-formats.html#concat). [Questi sono diversi] (http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f). – LordNeckbeard

+0

@LordNeckbeard Grazie per aver sottolineato la differenza. Non ho fatto la distinzione prima ... http://www.ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f – Sun

+0

cos'è ffmpeg-sound.txt? – SpaceDog

3

La risposta è corretta, ma non completa. La soluzione è usare uno script concatenato, come sembra tu abbia fatto. Il "ffmpeg-sound.txt" nella tua risposta sarà simile a questa:

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

con quel file, si fornisce a ffmpeg come ingresso utilizzando il formato concat:

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

Grazie per pubblicare la soluzione. Spero che questo chiarimento del formato del file di input aiuti la persona successiva.

Problemi correlati