FFmpeg-Konvertierung über einen Kontextmenüeintrag

FFmpeg-Konvertierung über einen Kontextmenüeintrag

Ich möchte einen Rechtsklick-/Kontextmenüeintrag mit dem Namen erstellen"In MP4 konvertieren"verfügbar für jede Videodatei (oder zumindest MKV, wenn nicht jede Videodatei möglich ist), wo FFmpeg von einem festgelegten Speicherort (sagen wir "C:\Benutzer\Benutzername\Dokumente\Programme\Portable\FFmpeg 20190916\bin") gestartet und genau das getan wird, nämlich eine MP4-Version erstellt wird(verlustfreie Kodierung / einfach den Container ändern)der Eingabevideodatei. Die Ausgabedatei (MP4) sollte im selben Ordner wie die Eingabedatei erscheinen. Idealerweise möchte ich das auch durch Auswählen (Strg+Klick) mehrerer Dateien gleichzeitig erreichen können.(aber nicht unbedingtjedenVideodatei im Ordner).

Ich verstehe, dass dies möglich sein sollte, indem man eine Bat-Datei erstellt und sie dann irgendwie in das Kontextmenü integriert (vielleicht mit einer Menüverknüpfung „Senden an“?). Ich kenne mich mit CMD allerdings nicht so gut aus und bin mir nicht sicher, was ich tun soll, damit FFmpeg die spezifischen Dateien abfängt und wie ich die Ausgabedateien in denselben Ordner wie die Eingabe bekomme.

Zunächst habe ich versucht, eine Bat-Datei anzupassen, basierend aufDasAntwort aufdie Frage, die Sie als Duplikat verlinkt habenum zu sehen, ob ich eine Bat-Datei erstellen kann, die funktioniert (bevor ich den Teil mit dem „Kontextmenü/der Registrierung“ mache), aber wie gesagt, ich weiß wirklich nicht, wie man cmd richtig verwendet, und es hat nicht funktioniert. Ich glaube nicht, dass meine Frage ein Duplikat der Frage ist, die Sie vorgeschlagen haben, denn meine befasst sich mit Video und nicht mit Audio (ich sage nicht, dass es im Prinzip viel anders ist, ich weiß nur nicht, was ich anstelle dieser Audio-Codecs eingeben soll, um es anzupassen) und vor allem geht es bei mir darum, den Container zu ändern und nicht um eine Konvertierung, also bräuchte ich andere Befehle. Basierend auf dieser Antwort und den Informationen inEine Kurzanleitung zur Verwendung von FFmpeg zum Konvertieren von Mediendateien bei Opensource.com habe ich Bat-Dateien mit Befehlen wie diesen erstellt:

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

(Ich habe den vollständigen Pfadnamen zu FFmpeg verwendet, ihn hier aber aus Gründen der besseren Lesbarkeit weggelassen) und dann habe ich versucht, ihnen eine MKV-Datei zu senden, aber nichts hat funktioniert. Ich habe hier bereits mehrere Fragen zu cmd und FFmpeg überprüft, aber sie konnten mir nicht helfen, daher bin ich für jede Hilfe dankbar!

Antwort1

Verfahren:

  • Holen Sie sich mit dem Befehl den zugehörigen Dateityp für die Erweiterung .MKV assoc .mkv. Die Standardausgabe ist beispielsweise .mkv=WMP11.AssocFile.MKV.

  • Öffnen Sie den zugehörigen Dateityp im Registrierungseditor (auch bekannt als regedit). Der Standardregistrierungstyp ist beispielsweise HKEY_CLASSES_ROOT\WMP11.AssocFile.MKV.

  • Um einen Befehl zur Registrierung hinzuzufügen, ändern Sie zuerst den ffmpeg-Befehl in das richtige Format. Der einfache Befehl zum Konvertieren von MKV in MP4 lautet ffmpeg -i abc.mkv -c copy abc.mp4. Der Dateiname muss durch eine Platzhaltervariable ersetzt werden %1. Der Befehl wird also zu ffmpeg -i %1 -c copy %1.mp4.

  • Fügen Sie die Registrierung mit dem folgenden als Administrator ausgeführten Befehl hinzu.

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\"" 

Dieser Befehl fügt den ffmpeg -i %1 -c copy %1.mp4Befehl im HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\commandRegistrierungsschlüssel zum defaultWert hinzu. Der REG_EXPAND_SZTyp ist erforderlich, damit die Shell %1den Dateinamen ableiten kann. Der Backslash und die doppelten Anführungszeichen dienen zur Behandlung von Leerzeichen im vollständigen Pfad der MKV-Datei.

  • Der Befehl kann auf verschiedene Arten geändert oder konfiguriert werden. Stellen Sie sicher, dass Sie die Standarddateizuordnung WMP11.AssocFile.MKVan Ihre aktuelle Konfiguration anpassen. Geben Sie außerdem den vollständigen Pfad der ffmpeg.exeausführbaren Datei an. Um das Popup des Eingabeaufforderungsfensters zu unterdrücken, fügen Sie cmd /Q /Cden Befehl ffmpeg hinzu. Siehediese Antwortfür diesen Trick.

Antwort2

Ein Beispiel für ein GitHub-Repo finden Sie unterhttps://github.com/kachurovskiy/VideoContextMenu

Hinweis: Ich bin nicht der Autor. Ich füge dies als Antwort hinzu, da es oben zu viele Kommentare gibt.

Es bewirkt Folgendes

all.reg - verwenden Sie dies, um die Explorer-Menüoption festzulegen

Windows Registry Editor Version 5.00

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

convert.bat - dies ist der Hauptbefehl, der sich in C:\VideoContextMenu(oder an einem anderen Ort) befindet

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

Befolgen Sie außerdem die akzeptierte Antwort, um die Einschränkung auf bestimmte Dateitypen vorzunehmen.

dh HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4für .mkv

verwandte Informationen