Playing m3u8 Files with HTML Video Tag

后端 未结 6 731
-上瘾入骨i
-上瘾入骨i 2020-12-01 00:30

I am trying to use HTTP Live Streaming (HLS) to stream video to my computers and my iPhone. After reading through the Apple \'HTTP Live Streaming Overview\' as well as \'Be

相关标签:
6条回答
  • 2020-12-01 01:07

    In normally html5 video player will support mp4, WebM, 3gp and OGV format directly.

        <video controls>
          <source src=http://techslides.com/demos/sample-videos/small.webm type=video/webm>
          <source src=http://techslides.com/demos/sample-videos/small.ogv type=video/ogg>
          <source src=http://techslides.com/demos/sample-videos/small.mp4 type=video/mp4>
          <source src=http://techslides.com/demos/sample-videos/small.3gp type=video/3gp>
        </video>
    

    We can add an external HLS js script in web application.

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset=utf-8 />
        <title>Your title</title>
          
        
          <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
          <script src="https://unpkg.com/video.js/dist/video.js"></script>
          <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
           
        </head>
        <body>
          <video id="my_video_1" class="video-js vjs-fluid vjs-default-skin" controls preload="auto"
          data-setup='{}'>
            <source src="https://cdn3.wowza.com/1/ejBGVnFIOW9yNlZv/cithRSsv/hls/live/playlist.m3u8" type="application/x-mpegURL">
          </video>
          
        <script>
        var player = videojs('my_video_1');
        player.play();
        </script>
          
        </body>
        </html>
    
    0 讨论(0)
  • 2020-12-01 01:08

    Adding to ben.bourdin answer, you can at least in any HTML based application, check if the browser supports HLS in its video element:

    Let´s assume that your video element ID is "myVideo", then through javascript you can use the "canPlayType" function (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
    }
    

    The canPlayType function, returns:

    "" when there is no support for the specified audio/video type

    "maybe" when the browser might support the specified audio/video type

    "probably" when it most likely supports the specified audio/video type (you can use just this value in the validation to be more sure that your browser supports the specified type)

    Hope this help :)

    Best regards!

    0 讨论(0)
  • 2020-12-01 01:09

    Might be a little late with the answer but you need to supply the MIME type attribute in the video tag: type="application/x-mpegURL". The video tag I use for a 16:9 stream looks like this.

    <video width="352" height="198" controls>
        <source src="playlist.m3u8" type="application/x-mpegURL">
    </video>
    
    0 讨论(0)
  • 2020-12-01 01:10

    Use 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>
    

    Different methods are available in flowplayer.org website.

    0 讨论(0)
  • 2020-12-01 01:18

    You can use video js library for easily play HLS video's. It allows to directly play 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>
    

    GitHub Video Js

    0 讨论(0)
  • 2020-12-01 01:30
    <html>
    <body>
        <video width="600" height="400" controls>
            <source src="index.m3u8" type="application/x-mpegURL">
        </video>
    </body> 
    

    Stream HLS or m3u8 files using above code. it works for desktop: ms edge browser (not working with desktop chrome) and mobile: chrome,opera mini browser.

    To play on all browser use flash based media player. media player to support all browser

    0 讨论(0)
提交回复
热议问题