En raison de problèmes de compatibilité entre le serveur Plex et les téléviseurs Panasonic, le seul moyen de le faire fonctionner correctement consiste à tout transférer en MKV, à copier directement tous les flux (vidéo, audio, sous-titres).
Semble assez simple:
avconv -i "input.avi" -c copy "output.mkv"
Sauf:
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:00:59 with gcc 4.6.3
[mpeg4 @ 0x8422140] Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from 'input.avi':
Metadata:
encoder : VirtualDubMod 1.5.4.1 (build 2117/release)
Duration: 00:27:38.52, start: 0.000000, bitrate: 1173 kb/s
Stream #0.0: Video: mpeg4 (Advanced Simple Profile), yuv420p, 640x352 [PAR 1:1 DAR 20:11], 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 132 kb/s
File 'output.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output.mkv':
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Video: mpeg4, yuv420p, 640x352 [PAR 1:1 DAR 20:11], q=2-31, 1k tbn, 25 tbc
Stream #0.1: Audio: libmp3lame, 48000 Hz, stereo, 132 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press ctrl-c to stop encoding
[matroska @ 0x8422cc0] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument
Les lignes à prendre étant:
[mpeg4 @ 0x8422140] Invalid and inefficient vfw-avi packed B frames detected#
<snip>
[matroska @ 0x8422cc0] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument
Je ne vois pas d’option permettant de décompresser les images B (ou de créer un timemap VBR? Avons-nous besoin de ceux-ci dans avconv?)
Y a-t-il un moyen de faire cela, comme dans avidemux?
Une solution de contournement consiste à convertir d'abord en .mp4:
avconv -i input.avi -c copy temp.mp4
avconv -i temp.mp4 -c copy output.mkv
rm temp.mp4
Malheureusement, on ne peut pas simplement acheminer le format mp4 entre les instances avconv: "[mp4 @ 0x80846c0] muxer ne prend pas en charge les sorties non recherchées"
A partir de ce ticket # 1979 sur ffmpeg bugtracker , la solution la plus simple est de corriger ce bogue ou d’ajouter manuellement -fflags +genpts
à la ligne de commande.
C'est à dire. changement
ffmpeg -i inputfile_that_cant_be_muxed_into_mkv.ext -c copy out.mkv
à
ffmpeg -fflags +genpts -i inputfile_that_cant_be_muxed_into_mkv.ext -c copy out.mkv
Merci à Andreas Cadhalpun ffmpeg
a maintenant un nouveau filtre: mpeg4_unpack_bframes
(voir ref ). Cela vous permettra de vous débarrasser du message: Invalid and inefficient vfw-avi packed B frames detected
.
L'utilisation est aussi simple que:
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi