Obtenha o software necessário
sudo apt-get install gpac mkvtoolnix
Extrair 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 o vídeo e o áudio de acordo com as 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%
Mux áudio e vídeo em mp4 container
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 -fps 24opção porque MP4Boxnão detectou fps de vídeo corretamente. Dependendo do uso, AC3a 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.