如何解析m3u8播放列表以使用javascript获取带宽?

时间:2016-08-02 05:27:18

标签: javascript html filereader m3u8

我有一个.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

3 个答案:

答案 0 :(得分:0)

试试这段代码:

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);
    }
}
希望它有所帮助。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

希望有帮助