Ich möchte alle .mkv-Dateien in einem Ordner mit VLC stapelweise in .mp4 konvertieren.
Es sollte der ursprüngliche Video- / Audiostream und wenn möglich der Untertitel .ass der .mkv verwendet werden. Es ist nicht wirklich eine Konvertierung, es ist eher so, als würde man den Container wechseln - mein Player kann die MKV-Videos nicht lesen.
Wenn ich diese Konvertierung von Hand (manuell) durchführe, funktioniert sie, aber ich muss viele MKV-Dateien konvertieren, sodass dies viel Zeit in Anspruch nehmen würde.
Ich habe im Internet nach einer Batch-Datei gesucht und einige gefunden. Ich habe versucht, sie nach meinen Wünschen zu ändern, aber bei allen Versuchen, die ich versucht habe, wurde nur eine MP4-Datei erstellt, die den Audiostream nicht enthält, und der Videostream kann auch nicht von allen meinen Mediaplayern auf dem PC gerendert werden.
Könnte mir jemand sagen, wie der Stapel aussehen muss, damit er mit dem ursprünglichen Video- und Audiostream (und möglicherweise .ass Untertiteln) funktioniert?
quelle
Antworten:
mkvtomp4
Sieht aus wie
mkvtomp4
ist, was Sie wollen?Sie können Windows- und Linux-Versionen auf der Google-Codepage herunterladen. Sie benötigen jedoch zusätzliche Software.
Überprüfen Sie die Websites auf Downloads für Windows oder Linux. Unter OS X müssen Sie nur,
brew install mkvtoolnix mp4box
wenn Sie Homebrew haben .Dadurch werden Ihre Untertitel jedoch nicht kopiert. Sie benötigen einen zusätzlichen Schritt.
FFmpeg Batch
Wenn mkvtomp4 für Sie nicht funktioniert, kann auch eine einfache FFmpeg- Batchdatei verwendet werden. Für Windows können Sie die Zeranoe-Builds herunterladen . Überprüfen Sie unter Linux FFmpeg aus Paketquellen. In OS X verwenden
brew install ffmpeg
.Dann rufen Sie einfach an:
Dadurch wird ein gültiger MP4-Container ohne Neucodierung erstellt. Durchlaufen Sie die Dateien nach Bedarf und verfügbar von Ihrem Betriebssystem. Dieser Stapel kopiert jedoch keine Untertitel.
In * nix können Sie Folgendes tun. Erstellen Sie einfach eine Datei
convert.sh
:Ersetzen Sie hier den Pfad zu Ihrem Videoordner. Machen Sie es ausführbar mit
chmod +x convert.sh
und führen Sie es dann mit aus./convert.sh
.In Windows benötigen Sie wahrscheinlich zwei Batch-Dateien ( schamloser Plug von hier ), eine davon
startconvert.bat
:Und eine, die die Konvertierung durchführt:
Speichern Sie beide im Videoordner. Führen
startconvert.bat
Sie einfach den Ordner aus, aus dem Sie die Konvertierung starten möchten.Untertitel
Wenn Sie die Untertitel hinzufügen möchten, benötigen Sie möglicherweise ein manuelles Verfahren, wenn Folgendes für Sie nicht funktioniert:
Verwenden Sie zum Extrahieren von Untertiteln:
Dies setzt voraus, dass Ihre Datei tatsächlich die Untertitel mit der Titel-ID Nummer 3 enthält und diese in das SRT-Format exportiert werden können. Verwenden Sie, um zu überprüfen, ob eine Datei tatsächlich Untertitel in Spur 3 enthält
mkvmerge -i input.mkv
.Verwenden Sie dann MP4Box, um die Untertitel erneut zur MP4-Datei hinzuzufügen.
quelle
Dies ist eine Optimierung eines Teils der Antwort, die slhck gegeben hat (und danke, slhck!), Weil ich festgestellt habe, dass dieser Befehl für das neueste (zum jetzige Zeitpunkt) ffmpeg nicht funktioniert hat - vielleicht haben sich die Parameter zwischen den Versionen geändert?
Verwenden Sie unter Windows 7 ffmpeg v.20130103-git-9e36d9e-win64-static (dekomprimieren Sie es mit dem Dienstprogramm 7zip ), das über http://ffmpeg.zeranoe.com/builds/ wiederum über http://ffmpeg.org gefunden wird Mit /download.html konvertierte der folgende Befehl eine .mov-Datei (von einem iPhone übernommen) in eine .mp4-Datei:
Ich fand, dass das Ändern des .mp4-Teils in .avi auch funktionierte, um es in einen .avi-Container zu ändern. Bei beiden Zielcontainern scheinen die Parameter "-vcodec copy -acodec copy" nur die Quelldatenströme in einen neuen Container (im Ziel) zu kopieren, sodass die Konvertierung verlustfrei ist (und ich vermute, dass dies bei a der Fall ist auch verschiedene Zielbehälter).
Diese Verbesserungen der Chargen, die slhck gegeben hat, haben auch bei mir funktioniert:
callConvert.bat:
convert.bat:
quelle
-c:a
und-acodec
, oder-c:v
und-vcodec
. Tatsächlich verwende ich heute noch die erstere, da dies die empfohlene Syntax ist und beide in der FFmpeg-Dokumentation erwähnt werden . Beachten Sie, dass die Konvertierung des Containers in AVI für viele Video- und Audio-Codecs möglicherweise nicht funktioniert, da AVI-Dateien keine Unterstützung für die Vorhersagecodierung bieten (die von H.264-Videos verwendet wird - die, die Ihnen das iPhone bietet). Wenn Sie keinen MP4- oder MOV-Container als Ziel verwenden, ist es immer besser, neu zu codieren.Alte Frage, aber hier ist meine Antwort. MP4 kann keine Untertitel erstellen, es sei denn, sie sind Teil des Videorahmens. Auf diese Weise konvertiere ich .mkv-Dateien in .mp4:
Speichern Sie es als mkv2mp4.ps1 und legen Sie es in dem Ordner ab, mit dem Sie arbeiten. Rechtsklick und "In Powershell öffnen" und es wird seine Sache tun.
Dies ist das erste Mal, dass ich mir Powershell anschaue (und das letzte Mal, dass ich hoffe - warum konnte MS Bash nicht einfach portieren?!), Aber es funktioniert für mich und basiert auf dem Code, den ich hier gefunden habe: https: // wiki .videolan.org / How_to_Batch_Encode / # Powershell
quelle
Makefile
- einfügen, um sie erneut ausführen und nur die neuen Quellen konvertieren zu können sowie um mehrere Konvertierungen parallel ausführen zu können (um alle Ihre CPUs zu nutzen) ).