Conversión de FFmpeg mediante una entrada del menú contextual

Conversión de FFmpeg mediante una entrada del menú contextual

Quiero crear una entrada de menú contextual/clic derecho llamada"Convertir a MP4"disponible para cada archivo de video (o al menos MKV, si cada archivo de video no es posible), donde iniciaría FFmpeg desde una ubicación establecida (digamos "C:\Users\Username\Documents\Programs\Portable\FFmpeg 20190916 \bin") y haz precisamente eso, crea una versión MP4(codificación sin pérdidas/simplemente cambie el contenedor)del archivo de vídeo de entrada. El archivo de salida (MP4) debería aparecer en la misma carpeta que el archivo de entrada. Idealmente, también me gustaría poder hacerlo seleccionando (Ctrl+clic) más de un archivo a la vez.(pero no necesariamentecadaarchivo de vídeo en la carpeta).

Entiendo que esto debería ser posible creando un archivo bat y luego integrándolo de alguna manera en el menú contextual (¿quizás con un acceso directo al menú "Enviar a"?). Sin embargo, realmente no conozco muy bien CMD y no estoy seguro de qué debo hacer para que FFmpeg capture los archivos específicos y cómo obtener los archivos de salida en la misma carpeta con la entrada.

Para empezar, intenté adaptar un archivo bat basado enesteRespuesta parala pregunta que has vinculado como duplicadapara ver, ver si puedo encontrar un archivo bat que funcione (antes de hacer la parte "menú contextual/registro"), pero, como dije, realmente no sé cómo usar cmd correctamente y no funcionó. No creo que mi pregunta sea un duplicado de la pregunta que usted sugirió, porque la mía trata sobre video en lugar de audio (no digo que sea muy diferente en principio, simplemente no sé qué escribir en lugar de esos códecs de audio para adaptarlo) y lo más importante, el mío se trata de cambiar el contenedor en lugar de convertirlo, por lo que necesitaría comandos diferentes. Entonces, según esa respuesta y la información encontrada enUna guía rápida para usar FFmpeg para convertir archivos multimedia en Opensource.com, he creado archivos bat con 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

(Utilicé el nombre de ruta completo a FFmpeg, pero lo omití aquí para facilitar la lectura) luego intenté enviarles un archivo MKV, pero ninguno funcionó. Ya revisé varias preguntas aquí relacionadas con cmd y FFmpeg, pero no pudieron ayudar, así que agradeceré cualquier ayuda brindada.

Respuesta1

Procedimiento:

  • Obtenga el tipo de archivo asociado para la extensión .MKV con assoc .mkvel comando. Por ejemplo, la salida predeterminada es .mkv=WMP11.AssocFile.MKV.

  • Abra el tipo de archivo asociado en el Editor del Registro (también conocido como regedit). Por ejemplo, el registro predeterminado es HKEY_CLASSES_ROOT\WMP11.AssocFile.MKV.

  • Para agregar un comando en el registro, primero modifique el comando ffmpeg para corregir el formato. El comando simple para convertir mkv a mp4 es ffmpeg -i abc.mkv -c copy abc.mp4. El nombre del archivo debe reemplazarse con una variable de marcador de posición %1. Entonces, el comando se convierte en ffmpeg -i %1 -c copy %1.mp4.

  • Agregue el registro con el siguiente comando ejecutado 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 agrega el ffmpeg -i %1 -c copy %1.mp4comando en HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\commandla clave de registro al defaultvalor. El REG_EXPAND_SZtipo es necesario para que el shell pueda deducir %1el nombre del archivo. La barra diagonal inversa y las comillas dobles sirven para manejar espacios en la ruta completa del archivo MKV.

  • El comando se puede cambiar o configurar de diferentes maneras. Asegúrese de cambiar la asociación de archivos predeterminada WMP11.AssocFile.MKVa su configuración actual. Coloque también la ruta completa del ffmpeg.exearchivo ejecutable. Para suprimir la ventana emergente de la ventana del símbolo del sistema, agregue cmd /Q /Cel comando ffmpeg. Veresta respuestapor ese truco.

Respuesta2

Hay un repositorio de github de muestra enhttps://github.com/kachurovskiy/VideoContextMenu

Nota: no soy el autor. Agrego esto como respuesta porque los comentarios anteriores son demasiados.

Hace lo siguiente

all.reg: utilícelo para configurar la opción del menú del explorador

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Video: to h264\command]
@="C:\\VideoContextMenu\\convert.bat \"%1\""

convert.bat: este es el comando principal ubicado en C:\VideoContextMenu(o en otra ubicación)

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

Además, siga la respuesta aceptada para restringirla a tipos de archivos específicos.

es decir HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4, para .mkv

información relacionada