Ich versuche, HTTP Live Streaming (HLS) zum Streamen von Video auf meine Computer und mein iPhone zu verwenden. Nachdem ich die Apple-Übersicht "HTTP-Live-Streaming" sowie "Best Practices für das Erstellen und Bereitstellen von HTTP-Live-Streaming-Medien für iPhone und iPad" durchgelesen habe, bin ich ein bisschen festgefahren.
Ich nahm meine Quelldatei (eine mkv) und verwendete ffmpeg, um die Datei mit dem MPEG-TS-Format und den von Apple empfohlenen Einstellungen sowie einem Baseline 3.0-Profil zu kodieren:
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"
Keine Sorgen da. Ich habe ein vorkompiliertes Segmentierungswerkzeug verwendet, um das Video zu segmentieren und eine .m3u8-Wiedergabeliste zu erstellen. Die resultierende Datei sah folgendermaßen aus:
#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
Ich habe dies anhand einiger Beispiel-Playlist-Dateien zur Verwendung mit HTTP Live Streaming überprüft, und ich sehe keine Probleme. Ich habe auch versucht, die .m3u8-Datei in VLC abzuspielen, und es funktioniert wie ein Zauber.
Ich habe eine HTML-Seite erstellt, um die Datei abzuspielen:
<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>
Und diese Seite funktioniert nicht in Chrome oder Safari auf meinem iPhone. Die html5-Video-Tag-Beispiele für w3schools funktionieren gut auf meinem Computer. Die oben erwähnte offizielle Apple-Übersicht enthält ein HTML-Beispiel, das meiner Seite sehr ähnlich ist. Mein Videoplayer reagiert jedoch nicht auf meine eigene .m3u8-Seite.
Möglicherweise ist die Antwort etwas spät, aber Sie müssen das MIME-Typattribut im Video-Tag angeben: type = "application/x-mpegURL". Das Video-Tag, das ich für einen 16: 9-Stream verwende, sieht so aus.
<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>
Streamen Sie HLS- oder m3u8-Dateien unter Verwendung des obigen Codes.
Um auf allen Browsern zu spielen, verwenden Sie den Flash-basierten Mediaplayer . Mediaplayer zur Unterstützung aller Browser
Als Antwort auf ben.bourdin können Sie zumindest in jeder HTML-basierten Anwendung prüfen, ob der Browser HLS in seinem Videoelement unterstützt:
Nehmen wir an, Ihre Videoelement-ID lautet "myVideo". Über Javascript können Sie die Funktion "canPlayType" verwenden ( http://www.w3schools.com/tags/av_met_canplaytype.asp ).
var videoElement = document.getElementById("myVideo");
if(videoElement.canPlayType('application/vnd.Apple.mpegurl') === "probably" || videoElement.canPlayType('application/vnd.Apple.mpegurl') === "maybe"){
//Actions like playing the .m3u8 content
}
else{
//Actions like playing another video type
}
Die Funktion canPlayType gibt Folgendes zurück:
"" wenn der angegebene Audio-/Videotyp nicht unterstützt wird
"Vielleicht", wenn der Browser den angegebenen Audio-/Videotyp unterstützt
"wahrscheinlich", wenn der angegebene Audio-/Videotyp am wahrscheinlichsten unterstützt wird (Sie können nur diesen Wert in der Überprüfung verwenden, um sicherzugehen, dass Ihr Browser den angegebenen Typ unterstützt.)
Ich hoffe das hilft :)
Freundliche Grüße!
Verwenden Sie den Flowplayer:
<link rel="stylesheet" href="//releases.flowplayer.org/7.0.4/commercial/skin/skin.css">
<style>
</style>
<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="//releases.flowplayer.org/7.0.4/commercial/flowplayer.min.js"></script>
<script src="//releases.flowplayer.org/hlsjs/flowplayer.hlsjs.min.js"></script>
<script>
flowplayer(function (api) {
api.on("load", function (e, api, video) {
$("#vinfo").text(api.engine.engineName + " engine playing " + video.type);
}); });
</script>
<div class="flowplayer fixed-controls no-toggle no-time play-button obj"
style=" width: 85.5%;
height: 80%;
margin-left: 7.2%;
margin-top: 6%;
z-index: 1000;" data-key="$812975748999788" data-live="true" data-share="false" data-ratio="0.5625" data-logo="">
<video autoplay="true" stretch="true">
<source type="application/x-mpegurl" src="http://live.wmncdn.net/safaritv2/live2.stream/index.m3u8">
</video>
</div>
Verschiedene Methoden stehen auf der Website flowplayer.org zur Verfügung.
Sie können die Bibliothek video js für die einfache Wiedergabe von HLS-Videos ..__ verwenden. Sie ermöglicht die direkte Wiedergabe von Videos
<!-- CSS -->
<link href="https://vjs.zencdn.net/7.2.3/video-js.css" rel="stylesheet">
<!-- HTML -->
<video id='hls-example' class="video-js vjs-default-skin" width="400" height="300" controls>
<source type="application/x-mpegURL" src="http://www.streambox.fr/playlists/test_001/stream.m3u8">
</video>
<!-- JS code -->
<!-- If you'd like to support IE8 (for Video.js versions prior to v7) -->
<script src="https://vjs.zencdn.net/ie8/ie8-version/videojs-ie8.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.14.1/videojs-contrib-hls.js"></script>
<script src="https://vjs.zencdn.net/7.2.3/video.js"></script>
<script>
var player = videojs('hls-example');
player.play();
</script>