Jeg prøver å bruke HTTP Live Streaming (HLS) til å strømme video til datamaskinene og iPhonen min. Etter å ha lest gjennom Apples "HTTP Live Streaming Overview" og "Best Practices for Creating and Deploying HTTP Live Streaming Media for the iPhone and iPad", står jeg litt fast.
Jeg tok kildefilen min (en mkv) og brukte ffmpeg til å kode filen i MPEG-TS-formatet med Apples anbefalte innstillinger og en Baseline 3.0-profil:
ffmpeg -i "example.mkv" -f mpegts -threads:v 4 -sws_flags bicubic -vf "scale=640:352,setdar=16/9,ass=sub.ass" -codec:v libx264 -r 29.970 -b:v 1200k -profile:v baseline -level:v 3.0 -movflags faststart -coder 1 -flags +loop -cmp chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 239 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -direct-pred 1 -fast-pskip 1 -af "aresample=48000" -codec:a libvo_aacenc -b:a 96k -ac 2 -y "output.ts"
Ingen bekymringer der. Jeg brukte et ferdigkompilert segmenteringsverktøy til å segmentere videoen og lage en .m3u8-spilleliste. Den ferdige filen så slik ut:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
http://localhost/media/stream/stream-1.ts
#EXTINF:10,
http://localhost/media/stream/stream-2.ts
#EXTINF:10,
http://localhost/media/stream/stream-3.ts
#EXT-X-ENDLIST
Jeg sjekket den mot noen Example Playlist Files for use with HTTP Live Streaming, og jeg ser ingen problemer. Jeg prøvde også å spille av .m3u8-filen i VLC, og det fungerer som smurt.
Jeg opprettet en HTML-side for å spille av filen:
<html lang="en">
<head>
<meta charset=utf-8/>
</head>
<body>
<div id='player'>
<video width="352" height="288" src="stream.m3u8" controls autoplay>
</video>
</div>
</body>
</html>
Og denne siden fungerer ikke i Chrome, Safari eller på min iPhone. Eksemplene på html5-videotagger på w3schools fungerer fint på datamaskinen min, og den offisielle Apple-oversikten som er nevnt ovenfor, gir et HTML-eksempel som er svært likt siden min. Likevel reagerer ikke videospilleren min når jeg besøker min egen .m3u8-side.
Svaret kommer kanskje litt sent, men du må oppgi MIME-type-attributtet i videotaggen: type="application/x-mpegURL". Videotaggen jeg bruker for en 16:9-strøm, ser slik ut.
<video width="352" height="198" controls>
<source src="playlist.m3u8" type="application/x-mpegURL">
</video>
<html>
<body>
<video width="600" height="400" controls>
<source src="index.m3u8" type="application/x-mpegURL">
</video>
</body>