Altere o framerate no contêiner MKV

0

Eu tenho um problema com a reprodução de alguns contêineres MKV (89 itens, totalizando 196,3 GB).

O áudio + vídeo são codificados em 25 fps, mas os submarinos estão totalmente fora de sincronia - estes são codificados em 23.976 fps.

Minha pergunta: Existe alguma maneira que eu possa mudar / reencitar o framerate nesses filmes para 23.976?

    
por mainstream 19.12.2014 / 22:47

3 respostas

0

Você pode tentar gravar o vídeo e o áudio em uma taxa de quadros diferente, mantendo as legendas como estão:

ffmpeg -i input.mkv -c:v libx264 -crf 21 -c:a aac -strict experimental -b:a 128k -r 23.98 -c:s copy output.mkv

O CRF define a qualidade do vídeo. Escolha algo menor para uma qualidade ainda melhor, como 18. 23 é o padrão para x264.

    
por 27.12.2014 / 19:59
1

Como as pessoas disseram nos comentários, o jeito certo de lidar com o problema que você está tentando resolver é ajustar as legendas, ou dizer ao seu player que elas são para um vídeo de velocidade diferente. (por exemplo, mpv --sub-fps 25 manterá subs para um show de 25fps em sincronia com uma cópia de 24 / 1.001 fps dele.) ( link )

Mas para responder à questão real:

Você não precisa recodificar para alterar o fps. ffmpeg não pode remuxar com novos timestamps sem recodificação, infelizmente, mas essa é uma limitação de design do ffmpeg. A codificação de vídeo é com perdas e muito lenta, por isso não faça isso.

Teste mkvmerge --default-duration 0:24000/1001fps --fix-bitstream-timing-information 0 in.mkv -o out.mkv para alterar o vídeo FPS. Isso não afetará o tempo do áudio, então você obterá um / desync. 0: seleciona a faixa 0 em seu arquivo de entrada, que geralmente é o vídeo.

Você precisará recodificar o áudio após processá-lo com um filtro de aceleração de preservação de inclinação. Eu normalmente só faço isso em tempo de reprodução com scaletempo filter do mpv / mplay (o mpv o insere automaticamente). O ffmpeg tem um filtro atempo que provavelmente faz o truque.

Então mux o áudio mais lento com o vídeo de 24 / 1.001fps, e você deve ter um arquivo de trabalho novamente.

Eu realmente não testei tudo isso, porque normalmente você nunca precisa fazer isso. Apenas diga ao seu jogador para que velocidade os submarinos são. E você pode até mesmo usar mpv --speed 25025/24000 -subfps 25 myfile.mkv para reproduzir seu vídeo a 25fps, se você tiver uma cópia de 24 / 1.001 fps de um programa britânico que tenha sido originalmente de 25 fps, e você quiser reproduzi-lo na velocidade original , com aceleração de áudio de pitch constante.

    
por 01.03.2015 / 03:29
0

não há necessidade de codificar e perder qualidade, pelo menos para windows. Use o software de edição de legendas, vá para a sincronização, altere a taxa de quadros de uma das suas legendas originais para o que você quiser, salve para a nova legenda sincronizada depois.

    
por 02.03.2017 / 00:15