Configurações do freio de mão para converter MKV para MP4, mantendo a qualidade original

44

Tenho uma tonelada de arquivos MKV que preciso converter para MP4 e meu software escolhido é o Handbrake.

Estou preso em quais configurações seriam melhores para a conversão. Eu quero manter a qualidade total. Acabo de converter com as configurações originais e não altero nada ou há algo específico que preciso alterar?

laranja
fonte
Guia aqui é bastante detalhado das configurações do Handbrake mattgadient.com/2013/06/12/...
janot
Estou recebendo um erro em alguns arquivos (para mkv para mp4 e mp4 para mkv): O arquivo de saída # 0 não contém nenhum fluxo. Alguém tem alguma idéia do que isso significa?
PrimitiveNom

Respostas:

86

Qual é o problema do Handbrake?

Quando você estiver usando o Handbrake para converter de um formato de contêiner para outro (por exemplo, MKV para MP4 no seu caso), o Handbrake recodificará o vídeo. Consulte também a respectiva solicitação de recurso que teria ativado a passagem de vídeo:

Desculpe, a adição da transmissão de vídeo não está planejada. O HandBrake foi projetado para ser um transcodificador de vídeo. Não foi projetado para permitir a passagem.

Portanto, sempre que você trocar de contêiner com o Handbrake, seu vídeo será recodificado, o que significa que a) leva tempo eb) pode causar perda de qualidade.

Eu tenho que recodificar? Eu não poderia simplesmente trocar o contêiner?

Como a passagem não é possível, pergunte-se: preciso recodificar? Se você deseja alterar apenas o contêiner de MKV para MP4, normalmente não precisa codificar nada , basta alterar o "agrupamento" ao redor do vídeo. Isso não perde qualidade e será um processo muito mais rápido.

Você pode trocar contêineres facilmente com o FFmpeg - basta solicitar a cópia dos fluxos de vídeo e áudio:

ffmpeg -i input.mkv -c copy -map 0 output.mp4

Existem também ferramentas como o MP4Box que também podem criar contêineres MP4 - o mesmo existe para o MKV com o MKVtoolnix .

No entanto, há uma grande ressalva: isso funciona apenas se os codecs de áudio e vídeo forem suportados no contêiner de destino (MP4), como é o caso do H.264 / H.265 e AAC, por exemplo, mas não para muitos outros. Além disso, o suporte ao formato de legenda para MP4 é diferente do MKV e, na verdade, é bastante restrito; portanto, esse comando pode falhar.

Se esse comando não funcionar, e se sua entrada usar codecs incorretos para o contêiner de saída, você provavelmente precisará recodificar . Nesse caso, os codecs serão adaptados ao contêiner de saída.

Para entender por que isso é necessário, é importante aprender a diferença entre codecs de vídeo e contêineres . Isso ajudará você a entender por que a alteração de contêineres funciona e por que os contêineres MP4 e MKV têm pouco a ver com codecs de vídeo.

Por que a recodificação está ruim, afinal?

Você (geralmente) não pode manter a qualidade total ao codificar um vídeo que já foi codificado. Isso ocorre porque o original já foi compactado descartando informações e, ao fazê-lo novamente, você está apresentando perda de geração .

Freqüentemente, você deseja recodificar o vídeo quando, por exemplo, suas dimensões mudarem, ou precisa de uma taxa de bits específica para compactar seu fluxo de vídeo ou o vídeo original usa um codec que não pode ser reproduzido por qualquer motivo.

Portanto, se você carregar seu vídeo MKV no Handbrake e recodificá-lo com x264, o codificador H.264 o Handbrake usa, armazena-o em um contêiner MP4, você perde qualidade independentemente do que for, a menos que defina a taxa de bits ou fator de qualidade tão alto que você não verá (realmente) a diferença. Mas então, o tamanho do arquivo também será maior.

No caso ideal, você converteria o vídeo em um vídeo não compactado, o que não perderá nenhuma qualidade, mas fornecerá arquivos com uma dúzia de Gigabytes de tamanho, mesmo por alguns minutos de material de vídeo.

Ok, mas eu realmente tenho que recodificar!

Se você realmente precisar recodificar, certifique-se de não definir uma taxa de bits média, mas escolha um fator de taxa constante , que é algo como "qualidade constante". Assim como a "taxa de bits variável" do MP3: ele garantirá o gasto dos bits nas partes de vídeo que precisam deles e melhorará a qualidade geral - no mesmo tamanho de arquivo.

Os valores de CRF sã são de 19 a 24, onde menor significa "melhor". Portanto, você pode tentar com um fator de taxa de 19. Além disso, certifique-se de definir o perfil "Alto", que permite ao codificador usar todos os sinais e assobios e otimizar a qualidade para uma determinada taxa de bits.

slhck
fonte
Obrigado! Parece que você é o único que parece se importar com essa pergunta e me ajudar, segui seu conselho e parece que a qualidade é a mesma que a original! :)
orange
Para alguns arquivos mkv, isso falhará (não foi possível gravar o cabeçalho do arquivo de saída ... codec incorreto). Use ffprobe -i file.mkv para ver o que formatar a / v está em, você provavelmente precisará reecode com vídeo x264 e AAC / AC3 áudio
ski_squaw
u 100% certo de que a nova embalagem de arquivos não causa perda de qualidade?
PrimitiveNom
1
@BallpointBen Não é possível, não: github.com/HandBrake/HandBrake/issues/…
slhck
1
@Hashim Tentei esclarecer a postagem conforme solicitado. E quanto à sua pergunta, uma vez Handbrake não permite passagem, conversão de MP4 para MKV vai apresentar perda de qualidade. E vai demorar muito tempo. Basta fazer ffmpeg -i input.mp4 -c copy output.mkve você deve ficar bem.
slhck 8/01
4

Isso funciona muito bem para mim. Abaixo está o código para converter todos os arquivos .mkv para .mp4 no Windows.

  • Pode ser necessário adicionar ffmpeg ao seu caminho. basta colocar o caminho completo para o executável ffmpeg, D: \ apps \ ffmpeg \ bin \ ffmpeg.exe
  • Faça o download do ffmpeg para Windows aqui.
  • Uso: Solte um arquivo .mkv nele. Ele fará o diretório inteiro.

Salve em um arquivo chamado convert.bat.

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause
MonkeyMagic
fonte
Funciona como um encanto.
Kit Johnson
Eu coloquei isso na pasta com ffmpeg.exe e mudei parafor %%a in ("*.mkv") do %~dp0ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
davidtbernal 30/03