Eu tenho um monte de arquivos MKV, todos feitos da mesma maneira:
- uma faixa de vídeo
- a faixa de áudio 1 é em inglês
- a faixa de áudio 2 é alemã
Agora, quero alterar a ordem das faixas de áudio, de modo que o alemão seja a faixa 1 e o inglês seja a faixa 2. Como posso fazer isso para todos os arquivos MKV em uma pasta?
Eu encontrei a solução e construí o seguinte script com
mkvmerge
omkvtoolnix
pacote:Isso percorre todos os arquivos mkv na pasta (supondo que todos foram criados da mesma maneira e precisam ser editados da mesma maneira). Como a primeira trilha é normalmente a trilha de vídeo, ela muda a segunda trilha para a terceira (
--edit track:2 --set track-number=3
) e a terceira para a segunda (--edit track:3 --set track-number=2
).Isso pode ser feito com um programa chamado MKVToolNix
Arquivo de exemplo MKV com 3 streams de áudio carregados:
Como você pode ver neste exemplo. Eu tenho 3 streams de áudio. TrueHD, DTS-HD e AC-3 Isso seria o mesmo que sua situação em inglês, alemão.
Basta arrastar o fluxo de áudio em alemão para o topo. Vou mover o AC-3 para o fluxo superior como meu exemplo.
Mas tudo o que isso faz é mover AC-3 para o topo da ordem de áudio... MAS Você notará que TrueHD Atmos ainda é a faixa padrão a ser reproduzida quando o arquivo é iniciado.
Para tornar AC-3 (ou alemão em sua situação) o fluxo de áudio padrão, clique na faixa alemã e, no lado direito, em propriedades, defina o sinalizador de faixa padrão como SIM
Depois de terminar tudo isso, pressione Start Multiplexing. Isso criará um novo arquivo com os novos ajustes que você fez. Você pode então descartar o arquivo antigo.
Por favor, NÃO use
mkvpropedit
para ordenar as faixas como na resposta aceita. Isso NÃO os ordenará corretamente, ao contráriomkvmerge
de .Se você inspecionar o vídeo com uma ferramenta como MediaInfo, verá que há um campo
StreamOrder
eID
.Pela minha experiência (aprendi isso da maneira mais difícil), é que apenas a pista
ID
mudará se você usarmkvpropedit
. Isso não altera oStreamOrder
, portanto o MKVToolnix também não reconhecerá as faixas como sendo ordenadas.Em vez disso, use
mkvmerge
onde você pode especificar o--track-order
, por exemplo:mkvmerge --output "your_file (1).mkv" "(" "your_file.mkv" ")" --track-order 0:0,0:2,0:1
Onde
0:0
denota a faixa de vídeo,0:2
então seria a faixa alemã e0:1
seria a faixa inglesa.Espero que isso ajude futuros leitores.
No Windows, isso se aplica a todos os MKVs em uma pasta. Ele altera a ordem das faixas remixando, ou seja, reconstruindo o arquivo inteiro em 1 minuto. Se necessário, especifique o caminho para as ferramentas MKV.
Se o seu reprodutor puder selecionar o áudio com base no sinalizador padrão ou forçado, reescrever o índice leva 1 segundo.
Você não pode reordenar as trilhas dentro de um arquivo mkv sem mesclar novamente as trilhas em um novo arquivo. Eu encontrei exatamente o mesmo problema recentemente e encontrei uma solução. Criei um arquivo em lote para reordenar as faixas de áudio que processa todos os arquivos mkv em uma pasta escolhida e gera os novos arquivos mkv com o mesmo nome com faixas de áudio reordenadas em um novo local. Ele usa mkvmerge.exe do kit MKVToolNix (última versão) para Windows. E, com certeza, o ressurgimento de faixas leva algum tempo em comparação com a alteração de sinalizadores e propriedades usando mkvproedit. Deixe-me saber se você ainda está interessado.
Sei que estou atrasado, mas gostaria de compartilhar uma solução simples - Shutter Encoder, uma GUI baseada em ffmpeg. Ele pode agrupar e reorganizar faixas de áudio com facilidade, sem recodificar. Uma desvantagem é que não preserva bem as legendas e estraga todo o formato das fontes nas minhas legendas ASS.
Espero que ajude.