Quero criar uma entrada de menu de contexto/clique com o botão direito chamada"Converter para MP4"disponível para todos os arquivos de vídeo (ou pelo menos MKV, se todos os arquivos de vídeo não forem possíveis), onde seria iniciado o FFmpeg a partir de um local definido (digamos "C:\Users\Username\Documents\Programs\Portable\FFmpeg 20190916 \bin") e faça exatamente isso, crie uma versão MP4(codificação sem perdas/basta alterar o contêiner)do arquivo de vídeo de entrada. O arquivo de saída (MP4) deve aparecer na mesma pasta do arquivo de entrada. Idealmente, eu gostaria de poder fazer isso selecionando (Ctrl + clique) mais de um arquivo por vez também(mas não necessariamentetodoarquivo de vídeo na pasta).
Entendo que isso deveria ser possível criando um arquivo bat e integrando-o de alguma forma no menu de contexto (talvez com um atalho de menu "Enviar para"?). Eu realmente não conheço muito bem o CMD e não tenho certeza do que devo fazer para que o FFmpeg capture o (s) arquivo (s) específico (s) e como obter o (s) arquivo (s) de saída na mesma pasta da entrada.
Para começar, tentei adaptar um arquivo bat baseado emesseresponda paraa pergunta que você vinculou como duplicadapara ver, vendo se consigo criar um arquivo bat que funcione (antes de fazer a parte "menu de contexto/registro"), mas, como eu disse, realmente não sei como usar o cmd corretamente e ele não funcionou. Não acho que minha pergunta seja uma duplicata daquela que você sugeriu, porque a minha trata de vídeo e não de áudio (não estou dizendo que seja muito diferente em princípio, só não sei o que digitar em vez daqueles codecs de áudio para adaptá-lo) e o mais importante, o meu é sobre alterar o contêiner em vez de converter, então eu precisaria de comandos diferentes. Então, com base na resposta e nas informações encontradas emUm guia rápido para usar o FFmpeg para converter arquivos de mídia no Opensource.com, criei arquivos bat com comandos como:
ffmpeg -i %1 copy "%~n1.mp4
ffmpeg -i "%1" "%1.mp4
ffmpeg -i "%1.mkv" "%1.mp4
ffmpeg -i input.mkv -c:av copy output.mp4
(Usei o caminho completo para FFmpeg, mas o omiti aqui para facilitar a leitura) e tentei enviar um arquivo MKV para eles, mas nenhum funcionou. Já verifiquei várias perguntas aqui sobre cmd e FFmpeg, mas elas não conseguiram ajudar, então agradecerei qualquer ajuda dada!
Responder1
Procedimento:
Obtenha o tipo de arquivo associado à extensão .MKV com
assoc .mkv
o comando. Por exemplo, a saída padrão é.mkv=WMP11.AssocFile.MKV
.Abra o tipo de arquivo associado no Editor do Registro (também conhecido como regedit). Por exemplo, o registro padrão é
HKEY_CLASSES_ROOT\WMP11.AssocFile.MKV
.Para adicionar um comando no registro, primeiro modifique o comando ffmpeg para o formato correto. O comando simples para converter mkv para mp4 é
ffmpeg -i abc.mkv -c copy abc.mp4
. O nome do arquivo deve ser substituído por uma variável de espaço reservado%1
. Então, o comando se tornaffmpeg -i %1 -c copy %1.mp4
.Adicione o registro com este seguinte comando executado como administrador.
REG ADD "HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\command" /VE /T REG_EXPAND_SZ /D "ffmpeg.exe -i \"%1\" -c copy \"%1.mp4\""
Este comando adiciona o ffmpeg -i %1 -c copy %1.mp4
comando na HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\command
chave do registro ao default
valor. O REG_EXPAND_SZ
tipo é necessário para que o shell possa deduzir %1
o nome do arquivo. A barra invertida e aspas duplas servem para lidar com espaços no caminho completo do arquivo MKV.
- O comando pode ser alterado ou configurado de diferentes maneiras. Certifique-se de alterar a associação de arquivo padrão
WMP11.AssocFile.MKV
para sua configuração atual. Coloque também o caminho completo doffmpeg.exe
arquivo executável. Para suprimir o pop-up da janela do prompt de comando, acrescentecmd /Q /C
o comando ffmpeg. Veresta respostapara esse truque.
Responder2
Há um exemplo de repositório do GitHub emhttps://github.com/kachurovskiy/VideoContextMenu
Nota: não sou o autor. Adicionei isso como resposta porque os comentários acima são muitos.
Ele faz o seguinte
all.reg - use isto para definir a opção do menu do explorer
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Video: to h264\command]
@="C:\\VideoContextMenu\\convert.bat \"%1\""
convert.bat - este é o comando principal localizado em C:\VideoContextMenu
(ou em outro local)
set i=%~n1
set x=%~x1
set o=%i%.mp4
if exist %o% (
set o=%i%-h264.mp4
)
ffmpeg -i "%i%%x%" -vcodec libx264 -preset slow -acodec aac "%o%"
exit
Além disso, siga a resposta aceita para restringi-la a tipos de arquivo específicos.
ou seja HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4
, para .mkv