Wie automatisiere ich die Videokonvertierung in mp4, ein iTunes-freundliches Format?

Ich möchte eine vollautomatische Lösung implementieren, die Videodateien aus einem eingehenden Verzeichnis auswählt, verarbeitet und das Ergebnis in das spezielle iTunes-Verzeichnis "Automatisch zu iTunes hinzufügen" legt.

Bevor Sie beginnen, verschiedene Produkte vorzuschlagen, lesen Sie die Anforderungen:

  • Befehlszeilenschnittstelle, damit wir sie mit einem Cron verwenden können
  • Führen Sie Pass Thru für Video- und Audiostreams durch, wenn die Quelle bereits mit dem Zielformat kompatibel ist
  • Untertitel von einem externen Dienst herunterladen (optional)
  • Einbetten vorhandener SRT-Dateien in das Ausgabevideo
  • Korrigieren von Metadaten von einem externen Dienst (optional)

Anfangs würde ich sagen, dass Handbrake dazu in der Lage sein sollte, aber ich habe festgestellt, dass Handbrake niemals Pass Thru für Video macht (das ist eine Aussage, die ich vom Autor bekommen habe).

Da Sie nach einem vollautomatischen Prozess suchen, ist es für mich sinnlos, den manuellen Prozess aufzuschreiben, denke ich. Ich verwende 3 Programme, um genau das zu tun, was Sie erreichen möchten, außer dass es manuell ist. Ich lade im mp4-Format herunter, daher brauche ich HandBrake nicht mehr zum Konvertieren.
@Robuust könnten Sie bitte mitteilen, welche Programme Sie verwenden. Sie können möglicherweise über AppleScript oder Automator kombiniert werden. Auch wenn es die Anforderungen der Frage möglicherweise nicht genau erfüllt, kann es nahe genug dran sein.
@Robuust ja, ein manueller Prozess ist ein gutes Beispiel , wenn die verwendeten Tools über eine Befehlszeilenschnittstelle verfügen.

Antworten (7)

z264

z264 sieht sich jede Datei an, berührt aber nur avi-, flv-, mpg-, mpeg-, wmv-, vob-, mkv- und mp4-Videodateien, kopiert Video- und Audiostreams und wickelt sie um, wenn möglich, transkodiert nur das Audio, wenn nötig, und transkodiert nur was Video ist erforderlich, und Sie erhalten iTunes-freundliche, Atom-optimierte MP4-Dateien, wobei die Originale in Ihrem Papierkorb verbleiben. Es trifft ziemlich intelligente Entscheidungen für Sie darüber, wie Dateien transkodiert werden, basierend darauf, wie Sie seine HandBrake -Variablen setzen (in den Zeilen 312-333 gesetzt).

Überprüfen Sie die Datei auf AVC-Kodierung und FLV-, WMV- oder MKV-Wrapper und packen Sie sie in den MP4-Container um, andernfalls, falls nicht bereits mp4, transcodieren Sie sie in AVC mp4

z264 hat mehrere Abhängigkeiten (mediainfo, rmtrash, ffmpeg, SublerCLI und HandBrakeCLI)

  • kopieren und fügen Sie den binären Installationsabschnitt in ein neues Bash-Skript ein und verwenden Sie es, um die Abhängigkeiten in /usr/local/bin/ herunterzuladen und zu installieren (erstellen Sie /usr/local und /usr/local/bin/, falls noch nicht vorhanden)

  • Erstellen Sie eine 2-GB-Ramdisk mit dem Namen „Zwei“ mit dem Befehl im Ramdisk-Abschnitt

    diskutil quiet erasevolume HFS+ 'Two' `hdiutil attach -nomount ram://4194304`
    
  • Überprüfen Sie die Befehlsdefinitionen (Speicherorte der Abhängigkeiten) und die korrekten Speicherorte (in "/usr/local/bin/").

    change line 231 to read:  mediainfo="/usr/local/bin/mediainfo"
    change line 236 to read:  rmtrash="/usr/local/bin/rmtrash"
    change line 238 to read:  ffmpeg="/usr/local/bin/ffmpeg"
    change line 239 to read:  SublerCLI="/usr/local/bin/SublerCLI"
    change line 262 to read:  mediainfo="/usr/local/bin/mediainfo"
    change line 263 to read:  rmtrash="/usr/local/bin/rmtrash"
    change line 265 to read:  HandBrakeCLI="/usr/local/bin/HandBrakeCLI"
    
  • als z264 in /usr/local/bin/ speichern

  • ausführbar machen

    sudo chmod +x /usr/local/bin/z264

  • Verwenden Sie Terminal, um z264 für einzelne Dateien oder Verzeichnisse von Dateien aufzurufen, oder rufen Sie es von einem Cron aus auf, um regelmäßig ganze Dateisysteme zu durchsuchen

    z264 directory.full.of.mixed.video.filetypes/*
    

Kleinere Probleme: Der Benutzer muss in der Lage sein, Bash zu lesen, zu debuggen und zu verwenden. z264 zählt noch nicht, wie viele background_transcoder-Prozesse es hervorbringt, was bedeutet, dass es bei vielen Transcodierungen eine Weile dauern wird, bis sie abgeschlossen sind, aber sie werden abgeschlossen. Sie benötigen auch viel Speicher (8 GB sind ok). Benutzer von Snow Leopard müssen den Purge -Befehl von den xcode-Entwicklertools installieren.

Vielen Dank! Vor dem Testen, nur wenn ich mir die Beschreibung und den Quellcode ansehe, scheint es das zu sein, wonach ich gesucht habe. Ich habe den Code auf github gepostet, erstelle ein Ticket, damit ich dich als Administrator des Projekts github.com/z264/z264 hinzufügen kann
@sorin @chillin Scheint nach dem Transcodierungs-Audioschritt in einer Schleife stecken zu bleiben:tty: illegal option -- - usage: tty [-s]
@sorin Ich bin auf Dateien gestoßen, die gut verarbeitet werden sollten, die dies nicht tun, normalerweise mkv mit Fataudio oder Audio mit zu hohen Kbps-Raten und z264-Prozessen ... und das Ergebnis ist eine Datei, die nicht funktioniert. Ich denke, das Problem ist … sicherlich nicht ffmpeg … und ich möchte es ganz klar sagen, und wenn das rassistisch klingt, dann nur, um den kleinsten Nadelstich an die schmerzhafteste Stelle des Typen zu drehen, der vor ein paar Versionen tatsächlich die Handbremse stromabwärts gebrochen hat … Ich habe meinen Zug verloren ... oh, französische Entwickler. ja. Französische fn-Entwickler. Aber wir wissen wirklich, dass das Problem Apple ist. Wir wollen die Slicks, aber nicht um jeden Preis!
mediainfo verschluckt sich manchmal auch, aber es gibt keine emotionale Investition. Aber wenn Sie eine spezielle Transcodierung für etwas für jemanden auf einen Prozessorknoten übertragen, und diese kleine Engine ihr kleines Herz heraustranscodiert, und das Ergebnis eine Datei ist, die, ähm, Junk ist, neigt dazu, zu ärgern. Aber VIEL RESPEKT davor, Entwickler in anderen Sprachen zu debuggen.

Derzeit verwende ich Subler , um MKVs in MP4s zu konvertieren und dabei Untertitel einzubetten, ohne Video oder Audio zu transcodieren. Wenn ich DTS transcodieren muss, damit Apple TV es abspielen kann, verwende ich MP4Tools . Beides sind jedoch GUIs, und ich habe keine Ahnung, ob sie von der Befehlszeile aus aufgerufen werden können. Ich nehme an, Ihre beste Wahl wäre MKVToolNix (vorausgesetzt, Sie möchten nur das Format ändern) und ffmpeg (das Transcodierungsoptionen enthält, wenn sie benötigt werden).

Ich verwende HandBrake wie in der obigen Frage vorgeschlagen, wenn der Download nicht im MP4-Format verfügbar ist. (Ich glaube, ich kann den Dienst, den ich verwende, nicht nennen, da das Herunterladen nicht in jedem Land legal ist, aber die Suche nach dem Schlüsselwort "YIFY" könnte helfen, MP4-Rips zu finden.) Außerdem verwende ich Subler , um ein SRT hinzuzufügen, ohne es zu haben um das MP4 noch einmal zu konvertieren .

Und um die Metadaten und die Kopie nach iTunes zu bekommen, verwende ich iFlicks , das aus dem App Store heruntergeladen werden kann .

Subler kann die Metadaten direkt von iTunes oder TV/MovieDB abrufen. Warum die zusätzliche Software hinzufügen?

Ich denke, Sie werden Ihre Antworten in diesen beiden Beiträgen finden:

Also, um es zusammenzufassen:

ffmpeg -i <input_file>.mkv -f srt -i <input_subtitle>.srt -c:v copy -c:a aac -b:a 384k -c:s mov_text -strict -2 <output_file>.mp4

Probieren Sie es im Paket ffmpeg aus . Es kann entscheiden, wenn nicht alle, die meisten Probleme.

Können Sie bitte erläutern, wie der Fragesteller ffmegdie gewünschten Aufgaben ausführen könnte? Gibt es Flags oder Einstellungen, die ihnen den Einstieg erleichtern könnten.

Sie können sich VideoDrive für Mac ansehen. All das erledigt es automatisch: www.aroonasoftware.com

Es hat keine CLI, aber einen eingebauten Timer, der ausgeführt werden kann, wann immer Sie wollen. Und es ist auch mit Applescript kompatibel.

SmartConveter ist kostenlos im App Store und schneller als Handbrake.

Können Sie bitte erläutern, wie SmartConverter bei der Beantwortung der Frage helfen kann? Bietet es eine Befehlszeilenschnittstelle, Pass-Thru oder einen anderen Teil der Anforderungen?