Devido a erros de compatibilidade entre o servidor Plex e as TVs Panasonic, a única maneira de fazê-lo funcionar corretamente é remuxar tudo para o MKV, copiar diretamente todos os fluxos (vídeo, áudio, legenda)
Parece bastante simples:
avconv -i "input.avi" -c copy "output.mkv"
Exceto:
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
Com as linhas de pegada relevantes sendo:
[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
Não vejo uma opção para descompactar os quadros B (ou criar um mapa de tempo VBR? Precisamos deles no avconv?)
Existe uma maneira de fazer isso, como no avidemux?
avconv -i xxx | buf | avconv -i stdin xxx
mkfifo
. Essencialmente, você usa um arquivo como armazenamento temporário para stout.A partir deste ticket # 1979, no ffmpeg bugtracker, a solução mais simples é corrigir esse bug ou adicioná-lo manualmente
-fflags +genpts
à linha de comando.Ou seja, mudar
para
fonte
avconv
versão 0.8.16, até que seja exibido um ímparCan't write packet with unknown timestamp
no final do arquivo. Esquisito.-fflags
seja usado como uma opção de entrada: ela deve ser anterior à sua-i input
. Mas provavelmente não teria funcionado se você não tivesse colocado+genpts
no lugar certo.avconv
9.18-6: 9.18-0ubuntu0.14.04.1 tambémGraças a Andreas Cadhalpun
ffmpeg
agora tem um novo filtro:mpeg4_unpack_bframes
(veja ref ). Isso permitirá que você se livrar da mensagem:Invalid and inefficient vfw-avi packed B frames detected
.O uso é tão simples quanto:
fonte