Eu quero converter em lote todos os arquivos .mkv em uma pasta em .mp4 com VLC.
Ele deve usar o fluxo de vídeo / áudio original e, se possível, a legenda .ass do .mkv. Não é realmente uma conversão, é mais como mudar o contêiner - meu player não consegue ler os vídeos MKV.
Se eu fizer essa conversão manualmente (manualmente), ela funcionará, mas eu tenho muitos arquivos MKV para converter, então isso levaria muito tempo.
Pesquisei na Internet um arquivo em lotes para fazer isso e encontrei alguns. Tentei modificá-los conforme meu desejo, mas todas as tentativas que criei criaram um arquivo .mp4 que não contém o fluxo de áudio e o fluxo de vídeo também não pode ser renderizado por todos os meus players de mídia no PC.
Alguém poderia me dizer como o lote deve ser, para que ele funcione com o fluxo de áudio e vídeo original (e talvez com legendas .ass)?
fonte
Respostas:
mkvtomp4
Parece que
mkvtomp4
é o que você quer?Você pode baixar as versões do Windows e Linux na página de código do Google. Você precisará de software adicional.
Verifique os sites em busca de downloads para Windows ou Linux. No OS X, você só precisa
brew install mkvtoolnix mp4box
se tiver o Homebrew .Porém, isso não copiará suas legendas. Você precisará de uma etapa adicional.
Lote FFmpeg
Se o mkvtomp4 não funcionar, um arquivo em lote FFmpeg simples também poderá funcionar. Para Windows, você pode fazer o download das compilações do Zeranoe . No Linux, verifique o FFmpeg a partir das fontes do pacote. No OS X, use
brew install ffmpeg
.Em seguida, basta ligar para:
Isso criará um contêiner MP4 válido sem recodificação. Passe os arquivos conforme necessário e disponível pelo seu sistema operacional. Este lote, no entanto, não copia legendas.
No * nix, você pode fazer o seguinte. Basta criar um arquivo
convert.sh
:Substitua o caminho para sua pasta de vídeo aqui. Torne-o executável com
chmod +x convert.sh
e execute-o com./convert.sh
.No Windows, você provavelmente precisará de dois arquivos em lote ( plug descarado daqui ), sendo um deles
startconvert.bat
:E aquele que realiza a conversão:
Salve ambos na pasta de vídeo. Basta executar a
startconvert.bat
partir da pasta da qual deseja iniciar a conversão.Legendas
Se você deseja adicionar as legendas, pode ser necessário um procedimento manual se o seguinte não funcionar para você:
Para extrair legendas, use:
Isso pressupõe que seu arquivo realmente contém as legendas no número de identificação da faixa 3 e elas podem ser exportadas para o formato SRT. Para verificar se um arquivo realmente contém legendas na faixa 3, use
mkvmerge -i input.mkv
.Em seguida, use o MP4Box para adicionar novamente as legendas ao arquivo MP4.
fonte
Esta é uma pequena parte da resposta que o slhck deu (e obrigado, slhck!) Porque descobri que o comando não funcionava no ffmpeg mais recente (no momento em que escrevi) - talvez os parâmetros tenham mudado entre as versões?
No Windows 7, usando o ffmpeg v.20130103-git-9e36d9e-win64-static (descompacte-o com o utilitário 7zip), encontrado em http://ffmpeg.zeranoe.com/builds/, por sua vez, em http://ffmpeg.org /download.html , o seguinte comando converteu um arquivo .mov (retirado de um iPhone) em um arquivo .mp4:
Descobri que alterar a parte .mp4 disso para .avi também funcionava, para alterá-la para um contêiner .avi. Nos dois contêineres de destino, o uso desses parâmetros para "copiadores -vcodec-copiadores -codec" parece copiar apenas os fluxos de origem em um novo contêiner (no destino); portanto, é uma conversão sem perdas (e acho que seria o caso de um variedade de contêineres de destino também).
Esses ajustes dos lotes que o slhck deu também funcionaram para mim:
callConvert.bat:
convert.bat:
fonte
-c:a
e-acodec
, ou-c:v
e-vcodec
. Na verdade, ainda estou usando o primeiro hoje, pois é a sintaxe recomendada, e ambos são mencionados na documentação do FFmpeg . Observe que a conversão do contêiner em AVI pode quebrar para muitos codecs de vídeo e áudio, pois os arquivos AVI não têm suporte para codificação preditiva (que o vídeo H.264 usa - aquele que o iPhone oferece). Se você não usar um contêiner MP4 ou MOV como destino, é sempre melhor recodificar.Pergunta antiga, mas aqui está a minha resposta, para constar. O MP4 não pode fazer legendas a menos que elas façam parte do quadro de vídeo, mas é assim que eu converto arquivos .mkv em .mp4:
Salve-o como mkv2mp4.ps1 e solte-o na pasta com a qual você está trabalhando. Clique com o botão direito e "Abrir no PowerShell" e ele fará o que quiser.
Esta é a primeira vez que olhei para o Powershell (e a última espero - por que o MS não conseguiu apenas portar o Bash ?!), mas funciona para mim e é baseado no código que encontrei aqui: https: // wiki .videolan.org / How_to_Batch_Encode / # PowerShell
fonte
Makefile
- para poder executá- la novamente e converter apenas as novas fontes, além de poder executar várias conversões em paralelo (para usar todas as suas CPUs) )