Videos konvertieren

bluedisc

bluedisc

Aktives Mitglied
Thread Starter
Dabei seit
12.12.2009
Beiträge
371
Reaktionspunkte
9
Hallo!

Ich habe eine video datei, entwerder in flv, webm, oder 3gp. Diese möchte ich gerne nach mp4 von php aus konvertieren. Ich habe das bisher mit ffmpeg gelöst dazu verwende ich:
PHP:
exec("/Applications/XAMPP/xamppfiles/htdocs/project/l/youtube/videos/ffmpeg  -i ".$path_to_vid_folder."/".$video_id."/".$ext." -ar 22050 ".$video_id.".mp4");

Allerdings habe ich 3 Probleme:
  1. php wartet bis der shell befehl durchgeführt wurde, das dauert aber, und ich möchte den User nicht solange warten lassen. Eventuell (nicht notwendig, aber schöne) ein Fortschritsbalken?
  2. Der output ruckelt mit gefühlten 5fps vor sich hin, und lässt sich auch nur mit VLC abspielen (Quicktime: Schwarzbild + Ton)
  3. Gibt es vllt. ein anderes Konveriterungs Programm, dass meine Grafikkarte verwendet und nicht mein CPU?

Vielen Dank für eure Mühen,
bluedisc
 
1) exec "terminiert" den Web-Server-Task und führt das Programm auf dem Server aus. Wenn das Programm fertig ist, kehrt es zu php zurück. Da dazwischen keine Interaktion stattfindet, gibt es auch keinen technische Weg für einen Balken.
2) ???
3) Software läuft nun mal auf einer CPU des Rechners...

Einziger Ansatz: auf Vorrat konvertieren und die gewünschte Datei laden.
 
Ok danke. Ist es möglich, dass ein Cron-Job-Shell-Script die Videos über Nacht auf Vorrat konvertiert? Ich würde das gerne in eine MySQL Tabelle einfügen. Kann das Shell Script mit Xampp Mysql arbeiten, wenn ja wie? Dann wäre nämlich 1) auch geklärt.

Zu 2. Sind den meine Parameter richtig? Wenn ich von .webm zu mp4 konvertiere (ffmpeg -i input.webm -ar 22050 output.mp4?) Ich habe mich mit ffmpeg noch nicht wirklich auseinander gesetzt.

Vielen Dank
 
du musst schon vcodec und acodec angeben.
 
Danke. Codec vom input File oder für das Outputfile?
 
für das output file...
 
Wäre fuer mp4 wie?
 
kommt auf dein ffmpeg an, welche libs mit drin sind.
wenn du x264 hast, dann
-vcodec libx264

AAC encoder
-acodec libfaac oder libfdk-aac
 
genau! gibts da was?
 
Vielen Danke mit den Tipps mit ffmpeg. Ich musste es neu compilieren, da die Mac-Version kein libfaac hatte. Ich habs mit http://ffmpeg.org/trac/ffmpeg/wiki/MacOSXCompilationGuide geschafft. Jetzt haben meine Videos aber verschieden framerates manche habe 30 andere haben 1000. 1000 ist für Webstreaming viel zu viel. Ich würde gerne die Video frame rate begrenzen. "ffmpeg max frame rate" hat mir in Google nichts mir verständliche erbracht. Vielen Dank!
 
So. Ich bin jetzt ein bisschen enttäuscht, da es alles so versprechungsvoll ausgesehen hat.
Code:
ffmpeg -i /Applications/XAMPP/xamppfiles/htdocs/project/l/youtube/videos/Wge1uynLGDY.webm -vcodec libx264 -acodec libfaac /Applications/XAMPP/xamppfiles/htdocs/project/l/youtube/videos/output.mp4

Das ist das Ergebnis: http://www.sendspace.com/file/s0trpv oder http://www.mediafire.com/?i3id7pn7kin83pr
Orginalvideo: http://youtube.de/watch?v=Wge1uynLGDY

ffmpeg configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libaacplus --enable-libass --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-openssl --enable-libopus --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --prefix=/usr/local

Irgendwelche Ideen? :confused:

Vielen Dank!
 
das mit den 1000 fps ist eine bug in ffmpeg.
du kannst natürlich noch den encodern etwas mehr tuning in den optionen geben...
 
nein, wenn ich das Original (.webm) öffne, dann sagt mir VLC 1000fps. Und ffmpeg hat auch Jahre gebraucht um 4:11min zurendern. mit 140fps. es waren irgendwie mehr als 60.000 frames, was zu 1000fps passt. Wenn ich ein Video mit 480x360 px und 29,xxxxx frames von webm nach mp4 konvertiere, geht das in 3sec.
Was meinst du mit "tuning". Ich kenne mich damit leider überhaupt nicht aus!
 
dann wurde das original schon mit einem buggy ffmpeg gemacht ;)
du kannst ffmpeg ja auch sagen wie viel fps das original hat...

was ich mich aber gerade frage, warum machst du die ganze konvertierungsaktion eigentlich?
mit dem jdownloader kannst doch direkt die mp4 von youtube ziehen...
 
es soll ja alles mit einem php script automatisiert werden. Die Videos sollen von Youtube runtergeladen werden und dann auf dem Server "gecached" werden. Wenn ich aber von Youtube runterlade, dann kriege ich häufig die vids in webm, was Chrome unterstützt, Safari aber nicht. Deswegen dachte ich mir, ich konvertier das alles und lass das dan übers LAN mit jwplayer streamen.
 
da gibt es auch was in php, das dir das konvertieren spart und direkt als mp4 lädt...
 
ich guck mal. Danke für deine Hilfe!
 
Zurück
Oben Unten