Faststart QT Movie

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Faststart QT Movie

    Hallo,

    Wird wahr. kein reines PHP Problem sein...
    es wird aktuell eine Mechanik genutzt die über ffmpeg,qtmetadata und qt-faststart Chapter in ein Moviefile hineinschreibt, soweit ist das ja kein Problem. Allerdings spielen diese nicht ab im Webbrowser, sondern laden erst komplett.
    Bisher funktionierte das, erst als die Chaptermarks dazu kamen gab es Probleme, das Hauptzeil besteht darin für das iPhone/iPad Chaptermark Support zu gewährleisten was soweit auch klappt, aber dabei hat es den PreLoad oder Autoplay auf PC/Mac Plattformen zerschossen.

    Apple QuickTime Reference zum File Format Aufbau:
    developer.apple.com/library/ma…/uid/TP40000939-CH204-SW1

    Die Atoms im Movie File sehen so aus:
    ftypqt -> moov und mdat
    (multimedia.cx/eggs/improving-qt-faststart/)
    Allerdings schreibt qtmetadata den "Text-Track" der Chapter ganz am ende des Files. Während er im moov Header scheinbar darauf referenziert. Ich vermute das er eben erst das ganze File durchliest bevor mit Spielen anfängt.
    Hier z.b. die Text Strings:

    ....(4byte size wide)
    wide (4byte)
    ....(4 byte size mdat)
    mdat (4byte)
    ..(2byte string length)
    Erster Chaptertext!
    ..(2byte string length)
    Zweiter Chaptertext!
    ...
    ...

    Das chap Atom enthält, soweit ich gesehen habe die Anzahl der "marks".

    -----

    Im PHP Skript auf der Seite wird das ganze dann quasi so ausgelesen, die Punkte stehen für Filler Content:

    Quellcode

    1. ...
    2. header('Content-Type: video/quicktime');
    3. header('Cache-Control: private, must-revalidate');
    4. header('Pragma: private');
    5. header('Content-Disposition: inline; file_name='.basename($filepath).';');
    6. $moviefile = fopen($filepath,'rb');
    7. ...
    8. ...
    9. if(isset($_SERVER['HTTP_RANGE']))
    10. {
    11. ...
    12. ...
    13. $range = substr($_SERVER['HTTP_RANGE'],strlen('bytes='));
    14. $split = explode('-',$range);
    15. if ($seek_start > 0 || $seek_end < $filesize)
    16. {
    17. header('HTTP/1.1 206 Partial Content');
    18. header('Status: 206 Partial Content');
    19. }
    20. $remaining_bytes = $seek_end-$seek_start+1;
    21. header('Accept-Ranges: bytes');
    22. header('Content-Range: bytes '.$seek_start.'-'.$seek_end.'/'.$filesize);
    23. header('Content-Length: '.$remaining_bytes);
    24. ...
    25. while($remaining_bytes > 0)
    26. {
    27. $chunk_size = ( $remaining_bytes < QTPLAY_BUFFERSIZE ? $remaining_bytes : QTPLAY_BUFFERSIZE );
    28. echo fread($moviefile, $chunk_size);
    29. flush();
    30. ob_flush();
    31. $remaining_bytes -= $chunk_size;
    32. }
    33. }
    34. else
    35. {
    36. header('Content-Length: ' .$filesize );
    37. session_write_close();
    38. usleep(1000);
    39. ob_flush();
    40. flush();
    41. while(!feof($moviefile) && ( connection_status()==0) && !connection_aborted() ) {
    42. print(fread($moviefile, 1024*8));
    43. flush();
    44. }
    45. }
    46. fclose($moviefile);
    Alles anzeigen



    Wäre für Hilfe dankbar und hoffe es kennt sich jemand damit aus.

    Viele Grüße
    lspy
  • Also der PHP Code hat schonmal funktioniert. Dann hast du Chaptermarks in die Moviedatei hinzugefügt. Diese werden irgendwie in den Movie-Container geschrieben? Dann ging nichts mehr. Den PHP Code hast du aber nicht bearbeitet? Und auch sonstiges hast du nicht verändert? client timeout, php execution time und sonstiges kann man ausschließen?

    Gibt es denn andere Player mit denen du die Datei wiedergeben kannst?
    Habe die Format Specs nur überflogen, ist schon ein ziemlich spezielles Problem - mit Chaptermarks habe ich noch nie gearbeitet.
  • Auch über das ganz normale Embbed,object klappt das so nicht, mit dem JWPlayer gibt es vielleicht einen alternativen weg.
    Allerdings ist Flash vorerst ein no-go, damit würde es aber vermutlich gehen, wobei es hier wahrscheinlich trotzdem auf Filespezifikationen ankommt.

    longtailvideo.com/support/jw-p…ery-http-pseudo-streaming
    longtailvideo.com/support/jw-p…ing-video-chapter-markers
    ---

    Es noch alles in der Forschung bzw. in der Probierphase...., sollte sich hier keine Antwort finden, melde ich mich, wenn es eine Lösung oder Alternative gibt.