Preciso converter um arquivo de vídeo do contêiner Matroska para o contêiner mp4. O arquivo Matroska contém uma trilha de vídeo h.264 e uma trilha sonora AC3. Deve ser possível fazer isso sem perdas, mas como fazê-lo com as ferramentas nativas do Ubuntu?
A transcodificação não é uma opção.
Chromecast
suporteH.264
comAAC
ouMP3
em umMP4
contêiner. É muito fácil transmitir vídeos do seu computador paraChromecast
se você tiver o Chrome com a extensão do Google Cast. Basta arrastar e soltar umMP4
com as codificações de fluxo corretas em uma janela do navegador e começar a transmitir.Respostas:
Talvez a ferramenta mais fácil para isso seja
ffmpeg
, ouavconv
dolibav-tools
pacote. O Libav é um fork do FFmpeg, para o qual o Ubuntu mudou por alguns anos até o Ubuntu 15.04. É um dos backends de muitas das ferramentas da GUI mencionadas em outras respostas.Alterar o contêiner sem reconfigurar o conteúdo não poderia ser mais simples:
Ele detecta automaticamente uma conversão de contêiner Matroska para MP4 com base nos nomes dos arquivos de entrada / saída.
-codec copy
cópias de fluxo, ou "re-muxes", os fluxos da entrada para a saída sem recodificaçã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. Portanto, verifique se o formato do contêiner escolhido , seja ele
mkv
,mp4
ou mesmoavi
tem suporte para todo o conteúdo de seus arquivos (vídeo, áudio, legendas, dados, etc.). Por exemplo,mp4
não suporta legendas (.srt
arquivos) de SubRip .fonte
avconv -i input.mkv -c:v copy -c:a libfaac output.mp4
(eu usei ffmpeg, presumo avconv tem os mesmos argumentos de linha de comando aqui)-map 0
obter os dois fluxos de áudio? Como eu disse na resposta: "O comportamento padrão de seleção de fluxo é selecionar apenas um fluxo por tipo de fluxo"-c:s mov_text
opção se você precisar manter, por exemplo.srt
faixa de legenda.Obtenha o software necessário
Extrair vídeo e áudio do arquivo matroska
Primeiro, você precisa verificar quais faixas o arquivo matroska contém com
mkvmerge --identify video.mkv
Em seguida, extraia o vídeo e o áudio de acordo com as faixas com:
mkvextract tracks video.mkv 1:video.h264 2:audio.ac3
Mux áudio e vídeo em mp4 container
MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4
Eu tive que adicionar a
-fps 24
opção porqueMP4Box
não detectou fps de vídeo corretamente. Dependendo do uso,AC3
a faixa de áudio deve ser recodificada em outra coisa antes do muxing.Agora você removeu os fluxos do contêiner matroska para o contêiner mp4 sem perder nenhuma qualidade.
EDIT: MP4 não suporta oficialmente áudio AC3, portanto a faixa de áudio deve ser convertida em um formato compatível (por exemplo, AAC, MP3) se você quiser que o arquivo seja reproduzido com outra coisa que não o VLC.
fonte
Você pode usar o Avidemux
Tem uma boa interface gráfica.
Ao converter de mkv para mp4, ele não é recodificado.
A conversão é feita dentro de um minuto (para um vídeo de 60 minutos).
sudo apt-get install avidemux
Abra o arquivo mkv no avidemux.
Selecione o modo de segurança, se solicitado.
Deixe o vídeo como cópia.
Escolha Arquivo-> Propriedades. Verifique se o codec de áudio está
aac
.aac(faac)
.copy
. (Às vezes, usando esta opção, o áudio pode estar fora de sincronia ou distorcido; nesse caso, selecioneaac(faac)
.)Selecione
mp4
para o formato.Selecione salvar, escolha o local e digite um nome de arquivo com
.mp4
a extensão.Nota: Às vezes (~ 10% de chance), pode falhar. Então use
handbrake(re-encode)
.Nota 2: existem dois links que ajudam você:
http://www.ubuntugeek.com/avidemux-free-video-editor-designed-for-simple-cutting-filtering-and-encoding-tasks.html
http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html
fonte
Você pode usar meu aplicativo, dmMediaConverter . Apenas deixe " copy " para os dois fluxos marcados (sem transcodificação) e coloque .mp4 no nome do arquivo de saída. É isso aí. Muito simples. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html
fonte
Como o MPEG Part 14 oferece suporte nativo a h.264 e AC3 sem transcodificação, você pode simplesmente renomear o arquivo para que ele tenha uma
.mp4
extensão em vez de uma.mkv
extensão.fonte
Você pode tentar o HANDBRAKE adicionando seu PPA digitando este código no terminal:
fonte