Faça o arquivo MKV adequado para streaming com ffmpeg (ou avconv) - como mover todos os metadados para o início do arquivo?

1

Minha pergunta é bem simples ...

Às vezes eu gosto de baixar arquivos MKV grandes de um servidor web e reproduzi-los enquanto eles estão baixando. No entanto, se eu fizer isso em arquivos MKV que eu transcodifiquei, muitas vezes o arquivo mostrará que ele é muito mais curto do que realmente é, e depois que ele chegar ao fim, ele continuará jogando e exibirá um tempo incorreto ... por exemplo. ele mostrará 2: 50/2: 50, mas continue jogando, no entanto, se eu tentar recuar com as teclas de seta, o player irá travar ou pular de volta para o começo do arquivo.

Então, como posso mover todos os metadados para o início do arquivo durante a codificação, para que o jogador saiba quanto tempo o arquivo está sem ter a coisa toda? Você pode fazer isso com o mp4 format usando -movflags faststart , mas como fazer isso para mkv ?

Me desculpe se isso já foi solicitado e respondido em outro lugar, não consegui pensar em palavras-chave melhores do que as que usei e as que usei não produziram resultados.

    
por Fredrick Brennan 19.03.2017 / 09:14

1 resposta

3

A fundação Matroska oferece uma ferramenta, mkclean , que realiza uma tarefa semelhante à que o qt-faststart faz para MOV / MP4s.

Sintaxe:

mkclean in.mkv out.mkv

Isso irá regenerar o índice de sugestões. Para manter as pistas originais,

mkclean --keep-cues in.mkv out.mkv

O FFmpeg também pode fazer esta , com algumas adivinhações, por parte do usuário.

ffmpeg -i in.mkv -c copy -reserve_index_space 50k out.mkv 

em que o valor reserve_index_space em bytes é o tamanho necessário para o índice. 50k bytes é o tamanho sugerido para 1 hora de mídia.

    
por 19.03.2017 / 09:31