tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
2895
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Ich möchte für meine Webseite ein Videoupload ermöglichen. Nun bin ich leider schon stunden am testen mit FFMPEG und komme einfach nicht mehr weiter...
    Ich hoffe jemand von euch hatt eine idee wie ich das hinkreige.

    Das Uploaden eines Videofiles Funktioniert einwandfrei. Nun kommt allerdings das Problem, das umwandeln.
    Ich habe derzeit eine Testumgebung auf Windows Server 2003 basis. ffmpeg-php wäre installiert...

    nun, da ich irgend wie mit dem ffmpeg-php nicht zurecht komme habe ich mir gedacht ich könnte das ganze per exec() lösen. Wenn ich da allerdings direkt dem Pfad eingebe geht das ganze nicht. Mittels Batch Datei habe ich es schon geschafft ein Video umzuwandeln. Da wüsste ich allerdings nicht wie ich das Video in die Datenbank eintrage. Zusätzlich habe ich das Problem das der User dann extrem lange warten muss. Optimal wäre es wenn das ganze im hintergrund umgewandelt werden würde und der User eben eine Nachricht + Mail bekommt sobald das Video umgewandelt wird. Hierbei sind allerdings die Probleme:

    - Video wird auf externem Server umgewandlet, also Datenbank Einträge nicht per CMD möglich.
    - kA. Wie ich ein CMD Command in den Hintergrund schicke ohne das es beim User lädt.

    Alternativ wäre das der user sieht wie weit der Umwandlungsstatus ust. Bei einem Kostenpflichtigen Programm habe ich schon gesehen das dies geht. Wäre dies mittels ffmpeg + ecec auch möglich?

    Wie sieht das ganze aus, wenn ich später ein Linux Server hätte?

    Ein weiteres Problem das ich habe ist, dass das Video nicht Proportional dargestellt wird, wenn es nicht schon als 4:3 Hochgeladen wird. Giebt es eine möglichkeit die Grösse zu beschränken und trozdem die Proportionalität zu behalten?

    Ich hoffe mir kann jemand helfen
     

  2. #2
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.629
    Blog-Einträge
    4
    zum ersten Problem : Du gibst die Aufgabe per AJAX ab, so, dass die Aufgabe vom Server angenommen wird und abgearbeitet. Das ist dann völlig unabhängig von der zu sehenden Seite und kann auch vom User nicht durch Abbrechen oder Schließen unterbrochen werden. Am Ende -also nach dem Transcoding- ist dann die eMail abzuwerfen, Erfolg oder nicht.

    also zB URL mit GET-Data an Server versenden:
    http://meinServer.DE/encode.php?file...rmat=mp4_small

    Der Umwandlungsstatus könnte durch Betrachten der Filegröße gemacht werden. Dafür müssen wir wissen, wie groß die Enddatei etwa sein wird. Also, Encoder ist so eingestellt, dass pro Minute etwa 2MB verbraten werden. Aus der Originaldatei haben wir erfahren, dass die Datei etwa 4:30min lang ist, die Enddatei sollte also etwa eine Größe von 9MB haben. Die aktuell berechnete Temp-Datei ist im Moment 3,2MB groß, also sind etwa 35% fertig. Das Abfragen der Tempdatei ist nicht so einfach, dazu gehört im Moment noch APC und php>v5.2. Da bitte genauer Hier nachschauen, denn Bilderuploads haben das gleiche Problem.

    Proportionen : Ist immer ein elendes Thema, man muss sich aber auf Etwas einigen. Grundsätzlich würde ich immer die längere Kante des Originals auf das Zielformat anpassen und den Rest mit Schwarz auffüllen.

    Beispiel:

    Originaldatei : 800x 450 (16:9)
    Zielformat : 320x240
    Skalierung also : 320/800 = auf 40%
    vertikal nur 180px, welche dann auf 240px mit schwarz aufgefüllt werden.

    Das geht in ffmpeg

    Links:
    http://blog.rvi-media.de/php/ffmpeg-php/
    http://youtubeclone.wordpress.com/20...ng-ffmpeg-php/

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  3. #3
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Klingt gut, hatte jetzt leider wenig Zeit und auch keine möglichkeiten das ganze zu Testen, mir ist aber gerade noch ein kleines Problem aufgefallen. Ich möchte den Videoupload über seperate Server regeln, so das beim umwandeln nicht die ganze Seite schlechend langsam wird. Nun ist es aber ja so da wenn ich von www.server auf "video upload" klicke und dann auf video.server weitergeleitet werde die Session ja auf dem Video Server nicht gefunden wird... Nun weis ich nicht wie ich dies am schlausten löse, damit der User dann auch darauf Zugriff hat ohne sich erneut einzuloggen?

    Was mir spontan einfällt wäre per mysql abfrage aber wie genau das aussehen würde hab ich kein Plan
     

  4. #4
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Nach langer Zeit bin ich nun mal dazugekommen mich ein wenig mit der Videoupload Funktion zu beschäftigen. "Testweise" Funktioniert das Uploaden und umwandeln einwandfrei, heisst meine PHP Funktionen laufen. Momentan läuft das ganze im Testbereich über meinen Homeserver. Da auf diesem Windows Server Installierst ist habe ich einfach ein kleines batch geschrieben welche die umwandlung und eintragung in die Datenbank vornimmt. Anstelle einer Statusanzeige wie viel % die Umwandlung schon hat, habe ich mich entschieden einfach eine PM an den User zu senden wenn die Umwandlung fertig ist bzw. ein Fehler aufgetreten ist.

    Zwei kleine dinge habe ich allerdings noch nicht ganz im griff:

    1. Verkleinerung
    Ich weis zwar dank der ffmpeg-php extensions wie hoch bzw breit ein Video ist, aber spontan fällt mir nicht ein wie ich das Proportional auf die ausgangsgrösse kriege...
    heisst ich hätte vor ffmpeg via paramater gleich mitzuteilen wie gross das endvideo un sein soll, also nicht das es einen schwarzen rand hat oder so.
    heisst 1. schritt ist sicher:
    PHP-Code:
    if($vid_width $max_width)... 
    bzw. das selbe bei der breite. Nun fällt mir spontan einfach nicht ein wie ich danach Proportional werde, die maximale breite allerdings $max_width ist. (Sorry falls es einfach ist, ich bin tot müde )

    2. Serverlast:
    Logischerzweise braucht das umwandeln extreme rechenpower. Folgegleich steht die CPU auf 100% last und das kann je nach länge des Videos schon mal einige Zeit in anspruch nehmen. Da auf dem Server allerdings noch andere Aufgaben ausgeführt werden sollen würde ich gerne ein Limit setzen, da ich nicht glaube das ich irgend wie sagen kann ffmpeg.exe darf max 50% von der CPU brauchen, denke ich das ich da unter Windows mit den Prioritäten arbeiten muss. Kann ich via batch irgend wie Automatisiert sagen ffmpeg hat niedrigste Priorität?
    Und denkt ihr es ist sinnvoll es möglich zu machen mehrere Videos gleichzeitig umzuwandeln oder sollte ich da ev. eine Warteschlaufe Programmieren und immer nur ein Video abarbeiten, wenn es mal dazu kommen sollte das mehrere User ein Video gleichzeitig Fertig hochgeladen haben?
     

Ähnliche Themen

  1. ffmpeg-php 20€/hour
    Von konstapel im Forum Stellenangebote (entgeltlich)
    Antworten: 0
    Letzter Beitrag: 11.03.10, 04:18
  2. ffmpeg + aac
    Von OnlyFoo im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 1
    Letzter Beitrag: 07.08.09, 20:03
  3. ffmpeg in PHP?
    Von jackie05 im Forum PHP
    Antworten: 0
    Letzter Beitrag: 21.12.08, 13:58
  4. FFmpeg-php installieren
    Von jojojan im Forum Linux & Unix
    Antworten: 15
    Letzter Beitrag: 29.06.08, 17:52
  5. Ffmpeg
    Von Kurt Cobain im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 06.12.06, 16:30