Conversão de FFmpeg por uma entrada do menu de contexto

Conversão de FFmpeg por uma entrada do menu de contexto

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 .mkvo 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 torna ffmpeg -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.mp4comando na HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\commandchave do registro ao defaultvalor. O REG_EXPAND_SZtipo é necessário para que o shell possa deduzir %1o 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.MKVpara sua configuração atual. Coloque também o caminho completo do ffmpeg.exearquivo executável. Para suprimir o pop-up da janela do prompt de comando, acrescente cmd /Q /Co 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

informação relacionada