我有一个.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
答案 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
详细信息。
希望有帮助