2016-06-17 3 views
0

J'ai 6 fichiers webm (vidéo/audio) que j'ai capturés via WebRTC (API web getUserMedia). Individuellement, ils jouent tous bien. Ils ont tous une longueur de 15 secondes et une taille de 2 Mo chacun. Lorsque je les concatène avec ffmpeg en utilisant le démultiplexeur concat (documentation), le fichier de sortie qui en résulte est 12MB (ce que j'attends), mais quand je le joue, il ne lit que la première vidéo et s'arrête après 15 secondes. J'ai essayé de jouer avec Google Chrome ainsi que VLC.ffmpeg: concaténation de fichiers webm - le fichier de sortie montre la première vidéo seulement

C'est la commande ffmpeg J'utilise:

ffmpeg -f concat -i mylist.txt -c copy output3.webm 

Et voici mylist.txt:

file 'tmpD08D.webm' 
file 'tmpD08E.webm' 
file 'tmpD08F.webm' 
file 'tmpD090.webm' 
file 'tmpD091.webm' 
file 'tmpD0A1.webm' 

est ici la sortie de ffmpeg:

c:\Temp\files>ffmpeg -f concat -i mylist.txt -c copy output4.webm 
ffmpeg version N-72383-g7206b94 Copyright (c) 2000-2015 the FFmpeg developers 
    built with gcc 4.9.2 (GCC) 
    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av 
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab 
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca -- 
enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l 
ibilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopenc 
ore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --ena 
ble-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable 
-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enabl 
e-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable 
-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --e 
nable-lzma --enable-decklink --enable-zlib 
    libavutil  54. 26.100/54. 26.100 
    libavcodec  56. 41.100/56. 41.100 
    libavformat 56. 33.101/56. 33.101 
    libavdevice 56. 4.100/56. 4.100 
    libavfilter  5. 16.101/5. 16.101 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 3.100/53. 3.100 
Input #0, concat, from 'mylist.txt': 
    Duration: N/A, start: 0.000000, bitrate: N/A 
    Stream #0:0: Audio: opus, 48000 Hz, mono, fltp 
    Stream #0:1: Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 
1k tbn, 1k tbc 
[webm @ 00000000003a5fe0] Codec for stream 0 does not use global headers but con 
tainer format requires global headers 
[webm @ 00000000003a5fe0] Codec for stream 1 does not use global headers but con 
tainer format requires global headers 
Output #0, webm, to 'output4.webm': 
    Metadata: 
    encoder   : Lavf56.33.101 
    Stream #0:0: Video: vp8, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 30 fps, 
30 tbr, 1k tbn, 1k tbc 
    Stream #0:1: Audio: opus, 48000 Hz, mono 
Stream mapping: 
    Stream #0:1 -> #0:0 (copy) 
    Stream #0:0 -> #0:1 (copy) 
Press [q] to stop, [?] for help 
[concat @ 0000000000361e20] DTS 0 < 14911 out of order 
[webm @ 00000000003a5fe0] Non-monotonous DTS in output stream 0:0; previous: 149 
11, current: 0; changing to 14911. This may result in incorrect timestamps in th 
e output file. 
[webm @ 00000000003a5fe0] Non-monotonous DTS in output stream 0:0; previous: 149 
11, current: 48; changing to 14911. This may result in incorrect timestamps in t 
he output file. 
[webm @ 00000000003a5fe0] Non-monotonous DTS in output stream 0:1; previous: 148 
69, current: 59; changing to 14869. This may result in incorrect timestamps in t 
he output file. 

Notez que je voir beaucoup d'erreurs "DTS non monotone dans le flux de sortie" dans la sortie ffmpeg.

Qu'est-ce que je fais mal ici?

+0

L'ordre et les propriétés du flux doivent être les mêmes pour toutes les vidéos. – Mulvya

Répondre

0

Terminé en utilisant mkvmerge qui était capable de fusionner les fichiers sans problème.

mkvmerge.exe -w -o file1.webm + file2.webm + file3.webm 

Si vos fichiers ont différents ordres de piste audio/vidéo, vous pouvez utiliser le --append à option pour ajouter des numéros de piste, comme dans:

mkvmerge.exe -w -o file1.webm + file2.webm + file3.webm --append-to 2:1:1:0,2:0:1:1 

Format des pistes annexées:

FILE2ID:VIDEOTRACKID:FILE1ID:VIDEOTRACKID,FILE2ID:AUDIOTRACKID:FILE1ID:AUDIOTRACKID