En raison de bogues de compatibilité entre le serveur Plex et les téléviseurs Panasonic, le seul moyen de le faire fonctionner correctement est de tout remuxer vers MKV, de 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
Avec les lignes de gotcha pertinentes é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 pour décompresser les trames B (ou construire un plan temporel VBR? En avons-nous besoin dans avconv?)
Existe-t-il un moyen de le faire, comme dans avidemux?
avconv -i xxx | buf | avconv -i stdin xxx
mkfifo
. Essentiellement, vous utilisez un fichier comme stockage temporaire pour stout.À partir de ce ticket # 1979 sur ffmpeg bugtracker, la solution la plus simple consiste à corriger ce bogue ou à l'ajouter manuellement
-fflags +genpts
à la ligne de commande.C'est à dire le changement
à
la source
avconv
version 0.8.16, jusqu'à ce qu'il affiche une étrangeCan't write packet with unknown timestamp
à la fin du fichier. Bizarre.-fflags
est utilisé comme option d'entrée: il doit précéder votre-i input
. Mais cela n'aurait probablement pas fonctionné du tout si vous n'aviez pas mis+genpts
au bon endroit.avconv
9.18-6: 9.18-0ubuntu0.14.04.1Merci à Andreas Cadhalpun a
ffmpeg
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:
la source