【问题标题】:how to parse a m3u8 playlist to get the bandwidths using javascript?如何解析 m3u8 播放列表以使用 javascript 获取带宽?
【发布时间】:2016-08-02 05:27:18
【问题描述】:

我有一个 .m3u8 文件。我想使用 javascript 解析它以获取带宽。播放列表附在下面

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000, RESOLUTION=720x480
http://ALPHA.mycompany.com/lo/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000, RESOLUTION=720x480
http://BETA.mycompany.com/lo/prog_index.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000, RESOLUTION=1920x1080
http://ALPHA.mycompany.com/md/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000, RESOLUTION=1920x1080
http://BETA.mycompany.com/md/prog_index.m3u8

【问题讨论】:

  • 请提供您尝试过的代码以及无效的代码。

标签: javascript html filereader m3u8


【解决方案1】:

为什么不使用hls.js 他们有一个API 可以为您完成上述工作。

查看链接https://github.com/video-dev/hls.js/blob/master/docs/API.md#hlslevels

实例化hls 库,然后实例化console.log(hls.levels) 这将为您提供一个包含所有已解析.m3u8 详细信息的数据数组。

希望有帮助

【讨论】:

    【解决方案2】:

    试试这个代码:

    var lines = file.split(/[\r\n]/);
    for (var i in lines){
        var line = lines[i];
        if (/BANDWIDTH/.test(line)) {
            var keyVal = line.split(/ /)[1],
                val = keyVal.split(/[=,]/)[1];
            console.log(val);
        }
    }
    

    希望对你有帮助。

    【讨论】:

      【解决方案3】:
      <script>
                  $.get( "sl.m3u8", function( data ) {
                          $content=data;
                          $arr=data.split("\n");
                          $removeItem = $arr[0];
                              $arr = jQuery.grep($arr, function(value) {
                                return value !== $removeItem;
                                   });
                                   $arr1=[];
                                   $arr2=[];
                          $.each($arr, function( index, value ) {
                                  var pattern = /#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=[0-9]*/;
                                  if(pattern.test(value))
                                  {
                                      var band=value.split("BANDWIDTH=")[1];
                                      $arr1.push(band);
                                  }
                                  else
                                  {
                                      $arr2.push(value);
                                  }
                          });
                          for (var i=0;i<$arr1.length;i++){
                              $('<option/>').val(i).html($arr1[i]).appendTo('#items');
                           }
                         $('#items').change(function(v){
                             myFunction($arr2[v.target.value]);
                        });
      
                      });
      
             </script>
      

      【讨论】:

      • 我想出了这样的东西
      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2010-12-12
      • 2013-09-09
      • 1970-01-01
      相关资源
      最近更新 更多