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 zuffmpeg -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.mp4
Befehl im HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\command
Registrierungsschlüssel zum default
Wert hinzu. Der REG_EXPAND_SZ
Typ ist erforderlich, damit die Shell %1
den 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.MKV
an Ihre aktuelle Konfiguration anpassen. Geben Sie außerdem den vollständigen Pfad derffmpeg.exe
ausführbaren Datei an. Um das Popup des Eingabeaufforderungsfensters zu unterdrücken, fügen Siecmd /Q /C
den 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 MP4
für .mkv