FFMPEG unter OSX mit Multi-Core Support

bardiir

bardiir

Aktives Mitglied
Thread Starter
Dabei seit
31.03.2009
Beiträge
743
Reaktionspunkte
66
Hi zusammen,

ich hab mich die letzten Tage damit beschäftigt, wie ich meine Videos in MP4(H.264) konvertieren kann fürs iPhone und hab dabei einiges an Fertiglösungen durchprobiert, hab aber keine gefunden, welche mehrere Cores benutzt beim konvertieren (auf nem MacPro natürlich ärgerlich) und stabil war.

Daher hab ich mir dann doch die Mühe gemacht, ffmpeg inkl. h.264, aac,... mit multi-core support mal zusammenzustückeln als CLI. Ich hab das ganze in ne Anleitung gepackt für alle Interessenten:

http://bardiir.net/osx/ffmpeg

Gegen Ende ist auch der Befehl eingetragen, mit dem ich derzeit meine Videos fürs iPhone konvertier. Womit ich nicht ganz klar komm ist 2-pass. Wenn ich ein Video im 2-pass Verfahren encode dann syncen die nicht aufs iPhone.

Also:
Code:
ffmpeg -threads 8 -y -i "$FILE" -r 25 -vcodec libx264 -s "$WIDTH"x"$HEIGHT" -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 24 -b "$BITRATE"K -bt "$BITRATE"K -refs 1 -coder 0 -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 128k -ar 44100 -ac 2 "${FILE%.*}.mp4"

funktioniert,

aber
pass1:
Code:
ffmpeg -i "$FILE" -y -an -pass 1 -s "$WIDTH"x"$HEIGHT" -vcodec libx264 -b "$BITRATE"K -flags +loop -cmp +chroma -partitions 0 -subq 1 -trellis 0 -refs 1 -coder 0 -me_range 16 -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt "$BITRATE"K -maxrate 10M -bufsize 10M -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect "$WIDTH":"$HEIGHT" -threads 8 "${FILE%.*}.mp4"

pass2:
Code:
ffmpeg -i "$FILE" -y -acodec libfaac -ab 128k -pass 2 -s "$WIDTH"x"$HEIGHT" -vcodec libx264 -b "$BITRATE"K -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt "$BITRATE"K -maxrate 10M -bufsize 10M -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect "$WIDTH":"$HEIGHT" -threads 8 "${FILE%.*}.mp4"

funktioniert nicht. iTunes nimmt die Videos an, spielt die Problemlos ab aber die werden bei der synchronisation mit dem iPhone schlicht ignoriert :(
Jemand ne Idee woran das liegen könnte?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Gelzomino, mann_0815 und smartcom5
kleine anmerkung:
du solltest da kein lame 3.98.2 nehmen, sondern nur 3.98.
ansonsten kriegst du bei -acodec libmp3lame einen buffer fehler...
k.a. ob aktuellere builds von ffmpeg den fehler mit 3.98.2 inzwischen behoben haben...
 
  • Gefällt mir
Reaktionen: bardiir
kleine anmerkung:
du solltest da kein lame 3.98.2 nehmen, sondern nur 3.98.
ansonsten kriegst du bei -acodec libmp3lame einen buffer fehler...
k.a. ob aktuellere builds von ffmpeg den fehler mit 3.98.2 inzwischen behoben haben...

Thx für den Tip :)
Hab das eher als vervollständigung bei mir reingebaut... ich benutz eigentlich eh nurnoch AAC.

Achso zu dem 2-pass noch... ich hab übrigens schon versucht mit AtomicParsley dieses iPod Atom zu setzen, welches Videosynchronisation mit dem iPod stört in den neuen Generationen, aber daran lag es wohl auch nicht.
 
Erstmal vor weg: RESPEKT! Hast du dir das nur "angelesen" oder hattest du schon das entsprechende Vorwissen?

Warum packst du das nicht in ein kleines Programm ala VisualHub? Oder für ganz low-end ein Applescript? Damit könnten die meisten Mac-User dann auch um... Wenn du daran kein Interesse hat, trag ich das mal auf meine Projekt-Liste...

Hast noch weitere nützliche Tips bzw. Terminal-Voodoo?

BTW: Kein Impressum auf deiner Homepage bzw. 404 failure.
 
Zuletzt bearbeitet:
Welche Version hast du denn in Gebrauch? Bei mir läuft 0.9.3

Mmh muss ich wohl mal die neue probieren, ich hab noch 0.9.1 drauf.

Wobei ich vermutlich bei dem selbstkompilierten bleiben werd, da das ja durch yasm auch an die CPU angepasst die Hardwarebeschleunigungen mitnimmt.
 
Ich entnehme der Frage, dass die Videos selbst mit Quicktime abspielbar sind, aber nicht synchronisiert werden. Dazu musst Du in iTunes explizit die Videos selektieren, damit sie synchronisiert werden.

- klicke in iTues auf das Objekt "iPhone" bzw. "iPod"
- wechsle zum Reiter "Videos"
- suche dort das neue Video und markiere es
- dann drücke Synchronisieren

Gruß
Blauer Claus
 
Ich entnehme der Frage, dass die Videos selbst mit Quicktime abspielbar sind, aber nicht synchronisiert werden. Dazu musst Du in iTunes explizit die Videos selektieren, damit sie synchronisiert werden.

- klicke in iTues auf das Objekt "iPhone" bzw. "iPod"
- wechsle zum Reiter "Videos"
- suche dort das neue Video und markiere es
- dann drücke Synchronisieren

Gruß
Blauer Claus

So mach ich das ja, wenn ich 2 Videos konvertiere, einmal mit dem 1-pass Befehl und einmal mit der 2-pass Kombo dann wird wenn ich in iTunes beide Videos zum synchronisieren auswähle nur das 1-pass übertragen, während das 2-pass ohne Fehlermeldung schlichtweg ignoriert wird.
 
Es gibt mehrere Hinweise darauf, dass dieses iPod Atom schuld sein soll wenn Videos nicht syncen, aber ich hab das schon mit Atomicparsley getestet und das tut auch nicht.

Ich komm bei dem 2-pass einfach nicht weiter, irgendwas muss ander Datei defekt sein :(

Hat keiner eine Idee woran das liegen kann :kopfkratz:
 
Wieviel kann man denn da noch herausholen - siehe Beispiel? :confused:

Ich hab biszu 200fps bei HD Movies ;)
Und das Maximum waren ca 800fps beim konvertieren fürs iPhone von 350x200 videos ca....

Ich bin aber derzeit mit der Handbremse auch dran, da ich das 2-pass auf der cli ned hinkrieg :eek:
 
Zuletzt bearbeitet:
Kommt das nicht auch auf die eingestellten Parameter an? Die Kerne sind doch alle bereits fast voll ausgelastet. Einen wissenschaftlich gültigen Vergleich hätte man, wenn alle oder wenigstens die wichtigsten Parameter gleich eingestellt wären. Das wäre doch mal interessant zu posten.

P.S.: Ich bevorzuge die Methode mit turbo.264HD, da dies auf dem MacPro während der sonstigen Arbeit ohne große CPU-Last funktioniert. Dabei wird ein Full-HD AVCHD Film (1.080p 30 fps) mit 140 fps in das iPhone Format gewandelt. Die CPU eines MacPro wird dabei zu etwa 40% gleichmässig ausgelastet. Man kann also noch gut weiterarbeiten.

Bei mehr oder weniger gleichen Parametern (Bitraten, Framegröße, etc.) ist die CLi bei mir ca. 30-40% schneller als die Handbremse, da bei der CLi ja der H.264 Codec genau auf die CPU angepasst compiliert wird (yasm vorausgesetzt), während bei dem fertichzeuch halt auch n Fertichcodec dabei is.
Die CPU-Last bleibt die selbe, das Ergebnis auch, nur ist Handbremse eben langsamer ;)

Deswegen würd ich ja relativ gerne auch den 2-pass beim cli ans laufen kriegen. Das kann man auch schön in nen Applescript dann packen und als Ordneraktion definieren, dann muss man sich um garnix mehr kümmern für das konvertieren von Videos aufs iPhone ;)
 
Zurück
Oben Unten