Albert: Videoinformationen in PHP auslesen

Mal kurz eine Zwischenfrage: Ist es eigentlich möglich die Videoinformationen in PHP auslesen? Mir sind da besonders die Breite und die Höhe des Videos wichtig. ffmpeg-php habe ich mir schon angeschaut, mein Hoster möchte das aber nicht installieren. Gibt es noch andere Wege?

Gruß A.

  1. Hallo Albert,

    Mal kurz eine Zwischenfrage: Ist es eigentlich möglich die Videoinformationen in PHP auslesen? Mir sind da besonders die Breite und die Höhe des Videos wichtig. Gibt es noch andere Wege?

    http://php.net/manual/de/class.swfvideostream.php

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
  2. Tach!

    Mal kurz eine Zwischenfrage: Ist es eigentlich möglich die Videoinformationen in PHP auslesen?

    Mal eine kurze Zwischenantwort: Ja klar, PHP kann Dateien lesen. Das ist nicht das Problem.

    ffmpeg-php habe ich mir schon angeschaut, mein Hoster möchte das aber nicht installieren. Gibt es noch andere Wege?

    Mir scheint, du wolltest eigentlich fragen: Welche fertige Lib gibt es, die das für mich erledigt? Das kann ich dir aber nicht beantworten.

    dedlfix.

  3. Mal kurz eine Zwischenfrage: Ist es eigentlich möglich die Videoinformationen in PHP auslesen? Mir sind da besonders die Breite und die Höhe des Videos wichtig. ffmpeg-php habe ich mir schon angeschaut, mein Hoster möchte das aber nicht installieren. Gibt es noch andere Wege?

    Gruß A.

    Das Problem ist weniger ffmpeg-php als die bestehende Abhängigkeit zu ffmpeg.

    Dein Hoster will es nicht installieren weil Deine Webseite vermutlich für eine Handvoll Euro/Monat zusammen mit denen von hunderten oder tausenden anderen Kunden auf einem Server liegt. Außerdem will der Hoster bei solchen Standard-Angeboten auch Deine Webseite mal einfach auf einen anderen Server schubsen: Verzeichnisse kopieren, DNS umstellen, solange warten bis die DNS-Cache-Zeit abgelaufen ist und "fertig", den alten Server vom Netz nehmen. Das geht nicht so einfach wenn Sonderwünsche einzelner Kunden berücksichtigt wurden.

    Was aus Sicht des Hosters auch nicht geht: Die Ermittlung der Daten aus dem Video kostet ungewöhnlich viel Rechenleistung. Und wenn der sowas installiert, dann wird ihn auch ein eigener Kunde "dossen". Nämlich in dem er bei jedem Abruf einer Seite mit dem Video die Metainformationen ermitteln lässt - und dann mal durch Zufall das Video beliebt wird. Es gibt sehr viele und nachvollziehbare Gründe für Deinen Hoster, das nicht zu tun.

    Einen Teil Deines Vorhabens kenne ich noch nicht. Willst Du Videos durch Dritte hochladen lassen? Dann achte aber auch auf die Menge der Daten, die Du speichern kannst, das ist nämlich begrenzt und Dein Hoster wird diese Grenze auch automatisch durchsetzen. Bei Videos ist dieses Limit schnell, also nach schon nach wenigen erreicht - es könnte also gut sein, dass Dein Gesamtvorhaben auch aus diesem Grund auf dem shared-host nicht zu realisieren ist.

    Lösung 1:

    In einem solchen Fall hilft nur ein eigener (virtueller) Server. Achte auch hier genügen Speicherplatz und darauf, dass Du jemanden brauchst, der den für Dich administriert. Entweder musst Du das selbst können - woran sehr viele kläglich scheitern - oder jemanden bezahlen oder halt einen "managed server" mieten. Achte auch hier auf die gebotene Leistung und den Umfang dessen, was mit "managed" gemeint sein soll. "Billig" heisst in diesem Bereich meist "eingeschränkter Service", "sehr billig" ist hier meist gleichbedeutend mit "unbrauchbar". Und wie das Leben so ist haben die "billigen" Angebote eine Vertragsbindung - Es kann also sein, Du mietest aus Unkenntnis einen vermeintlich billigen Server, der Dir aber nichts nützt und nur Geld kostet. Lass Dich beraten - dazu muss Du aber offenlegen, was Du jetzt willst und künftig wollen wirst.

    Lösung 2:

    Wenn es Dir nur darum geht, SELBST WENIGE Videos in den eigenen Auftritt zu integrieren, dann ermittle die Informationen @home selbst und lade mit dem Video eine selbst erstellte Datei mit den Meta-Informationen hoch. Clevere Kerlchen geben dieser Datei einfach den gleichen Namen wie dem Video und verwenden für sowas das ini- oder JSON-Format, welche PHP so schön einfach lesen kann.

    Lösung 3:

    Raspberry und große Speicherkarte kaufen. Linux, Webserver, PHP und ffprobe installieren. Webserver mit DynDNS und Portfreigabe im Router einrichten, ein paar Skripte schreiben und die Videos erst auf den Raspi hochladen, Daten ermitteln und dann alles vom Raspi auf den Webserver schubsen.

    1. Mal kurz eine Zwischenfrage: Ist es eigentlich möglich die Videoinformationen in PHP auslesen? Mir sind da besonders die Breite und die Höhe des Videos wichtig.

      a) Eventuell hilft http://getid3.sourceforge.net/

      b) Prüfe, ob du Programme ausführen kannst, bei PHP scheint die Funktion exec() dafür zuständig zu sein. echo exec("ls"); sollte zum Beispiel den Verzeichnisinhalt ausspucken.
      Dann bräuchtest du "nur" noch eine statisch gebundende Version von ffprobe (Hilfsprogramm aus dem ffmpeg-Paket) auf den Server zu kopieren.

      c) Grundsätzlich kannst du auch zu Fuß Videodateien mit fopen() öffnen und die Metadaten mit fread() auslesen. Ob du Lust und Zeit hast, dich durch womöglich mehrere Dateiformatsspezifikationen zu wühlen, steht auf einem anderen Blatt …

      Die Ermittlung der Daten aus dem Video kostet ungewöhnlich viel Rechenleistung.

      Das Auslesen einer Handvoll Bytes aus einer Datei kostet "ungewöhnlich viel Rechenleistung"?

      1. Das Auslesen einer Handvoll Bytes aus einer Datei kostet "ungewöhnlich viel Rechenleistung"?

        Beachte hierzu folgendes: Die Sichtweise eines Massenhosters könnte hier von der allgemeinen sehr stark abweichen. Im übrigen bietet eine Installation von ffmpeg[-php] dann mehr Möglichkeiten (z.B. recodieren), die auch genutzt werden könnten - und richtig Leistung fressen.

      2. echo exec("ls"); sollte zum Beispiel den Verzeichnisinhalt ausspucken.

        Nein. So bekommst Du nur die letzte Zeile. Aber

        echo system("ls");
        echo `ls`;
        

        machen das. Letzteres übrigens mit einem zusätzlichen Zeilenumbruch am Ende.