Eu acredito que
avconv -i file.mkv -c:v copy -c:a copy file.mp4
é o comando correto. Você precisa especificar a propriedade de cópia do codec para os fluxos que deseja copiar separadamente.
Estou tentando converter um arquivo MKV para MP4 para ser compatível com meu PS3. Estou usando:
avconv -i file.mkv -c copy file.mp4
Ele falha e recebo o seguinte erro:
[mp4 @ 0x8a17c00] pts < dts in stream 0
av_interleaved_write_frame(): Invalid argument
O arquivo é vídeo h264 e áudio ac3.
Eu acredito que
avconv -i file.mkv -c:v copy -c:a copy file.mp4
é o comando correto. Você precisa especificar a propriedade de cópia do codec para os fluxos que deseja copiar separadamente.
sudo apt-get install gpac mkvtoolnix
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%
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.