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 .mkv
el 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 enffmpeg -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.mp4
comando en HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\command
la clave de registro al default
valor. El REG_EXPAND_SZ
tipo es necesario para que el shell pueda deducir %1
el 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.MKV
a su configuración actual. Coloque también la ruta completa delffmpeg.exe
archivo ejecutable. Para suprimir la ventana emergente de la ventana del símbolo del sistema, agreguecmd /Q /C
el 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