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:
Alles anzeigen
Wäre für Hilfe dankbar und hoffe es kennt sich jemand damit aus.
Viele Grüße
lspy
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
- ...
- header('Content-Type: video/quicktime');
- header('Cache-Control: private, must-revalidate');
- header('Pragma: private');
- header('Content-Disposition: inline; file_name='.basename($filepath).';');
- $moviefile = fopen($filepath,'rb');
- ...
- ...
- if(isset($_SERVER['HTTP_RANGE']))
- {
- ...
- ...
- $range = substr($_SERVER['HTTP_RANGE'],strlen('bytes='));
- $split = explode('-',$range);
- if ($seek_start > 0 || $seek_end < $filesize)
- {
- header('HTTP/1.1 206 Partial Content');
- header('Status: 206 Partial Content');
- }
- $remaining_bytes = $seek_end-$seek_start+1;
- header('Accept-Ranges: bytes');
- header('Content-Range: bytes '.$seek_start.'-'.$seek_end.'/'.$filesize);
- header('Content-Length: '.$remaining_bytes);
- ...
- while($remaining_bytes > 0)
- {
- $chunk_size = ( $remaining_bytes < QTPLAY_BUFFERSIZE ? $remaining_bytes : QTPLAY_BUFFERSIZE );
- echo fread($moviefile, $chunk_size);
- flush();
- ob_flush();
- $remaining_bytes -= $chunk_size;
- }
- }
- else
- {
- header('Content-Length: ' .$filesize );
- session_write_close();
- usleep(1000);
- ob_flush();
- flush();
- while(!feof($moviefile) && ( connection_status()==0) && !connection_aborted() ) {
- print(fread($moviefile, 1024*8));
- flush();
- }
- }
- fclose($moviefile);
Wäre für Hilfe dankbar und hoffe es kennt sich jemand damit aus.
Viele Grüße
lspy