Como converter arquivos .mkv em arquivos .mp4 sem perdas?

107

Eu preciso converter um arquivo de vídeo do container Matroska em mp4 container. O arquivo Matroska contém uma trilha de vídeo h.264 e uma trilha sonora AC3. Deveria ser possível fazer isso sem perdas, mas como fazê-lo com ferramentas nativas do Ubuntu?

A transcodificação não é uma opção.

    
por Seppo Erviälä 25.06.2011 / 01:22
fonte

6 respostas

140

Talvez a ferramenta mais fácil seja ffmpeg ou avconv do pacote libav-tools . Libav é uma bifurcação do FFmpeg, que o Ubuntu mudou para alguns anos até o Ubuntu 15.04. É um dos backends para muitas das ferramentas GUI mencionadas em outras respostas.

A alteração do contêiner sem o novo conteúdo de reencenação não poderia ser mais simples:

ffmpeg -i input.mkv -codec copy output.mp4
  • Ele detecta automaticamente uma conversão de contêiner Matroska para MP4 com base em nomes de arquivos de entrada / saída.

  • -codec copy stream copia, ou "re-muxes", os fluxos da entrada para a saída sem re-codificação. Pense nisso como copiar e colar.

  • O comportamento padrão de seleção de fluxo é selecionar apenas um fluxo por tipo de fluxo. Por exemplo, se sua entrada tiver dois fluxos de vídeo e um fluxo de áudio, somente o fluxo de vídeo com o maior tamanho de quadro será selecionado. Adicione -map 0 se você quiser selecionar todos os fluxos da entrada.

  • Alguns contêineres podem não suportar alguns formatos. Então verifique se o formato container escolhido, seja mkv , mp4 ou mesmo avi tem suporte para todos os conteúdo em seus arquivos (vídeo, áudio, legendas, dados, etc). Por exemplo, mp4 não suporta legendas SubRip ( .srt files).

por MestreLion 02.10.2012 / 01:59
fonte
24

Obtenha o software necessário

sudo apt-get install gpac mkvtoolnix

Extraia vídeo e áudio do arquivo matroska

Primeiro você precisa verificar quais faixas o arquivo matroska contém com

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

Em seguida, extraia vídeo e áudio de acordo com suas faixas com:

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%

Áudio e vídeo Mux no mp4 containter

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

Eu tive que adicionar a opção -fps 24 porque MP4Box não detectou vídeo fps corretamente. Dependendo do uso, AC3 faixa de áudio deve ser recodificada em outra coisa antes do muxing.

Agora você tem fluxos remotos do contêiner matroska para o contêiner mp4 sem perder qualidade.

EDITAR: MP4 oficialmente não suporta áudio AC3, então a faixa de áudio deve ser convertida em um formato suportado (por exemplo, AAC, MP3), se você quiser que o arquivo seja jogável com algo diferente de VLC.

    
por Seppo Erviälä 25.06.2011 / 13:03
fonte
12

Você pode usar o Avidemux

Tem boa interface gráfica.

Ao converter de mkv para mp4, ele não é recodificado.

A conversão é feita em um minuto (para um vídeo de 60 minutos).

  1. sudo apt-get install avidemux

  2. Abra o arquivo mkv no avidemux.

  3. Selecione o modo de segurança, se solicitado.

  4. Deixe o vídeo como cópia.

  5. Escolha Arquivo- > Propriedades Verifique se o codec de áudio é aac .

    1. Se o codec de áudio NÃO for umac, selecione aac(faac) .
    2. Caso contrário, deixe-o como copy . (Às vezes, usando essa opção, o áudio pode estar fora de sincronia ou distorcida, nesse caso, selecione aac(faac) .)
  6. Selecione mp4 para o formato.

  7. Selecione salvar, escolha o local e digite um nome de arquivo com .mp4 como extensão.

Observação: às vezes (10% de chance) pode falhar. Então use handbrake(re-encode) .

Nota2: existem dois links que o ajudam:

link

link

    
por loksena 03.08.2012 / 18:43
fonte
2

Vocêpodeusarmeuaplicativo, dmMediaConverter . Basta deixar " copy " para os dois fluxos verificados (sem transcodificação) e colocar .mp4 no nome do arquivo de saída. É isso aí. Muito simples. link

    
por mdalacu 21.06.2017 / 08:17
fonte
-2

Como o MPEG Part 14 suporta h.264 e AC3 nativamente sem transcodificação, basta renomear o arquivo para que ele tenha uma extensão .mp4 em vez de uma extensão .mkv .

    
por Richard 26.12.2013 / 16:21
fonte
-2

Você pode tentar HANDBRAKE adicionando seu PPA digitando este código no terminal:

sudo add-apt-repository ppa:stebbins/handbrake-releases
    
por 13east 25.06.2011 / 05:13
fonte