前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >播放器如何切换视频清晰度

播放器如何切换视频清晰度

作者头像
马上就说
发布2020-11-11 16:42:54
3.6K0
发布2020-11-11 16:42:54
举报
文章被收录于专栏:码上就说码上就说

随着移动互联网的高速发展,网速的雄起,我们播放视频,高清已经是入门要求了,现在怎么也要是1080P或者4K视频才好意思让我冲会员吧.但是不要忘了,世界很大,你们先富起来的人也要考虑网络的平均状态,互联网的生态是多样的,低清/普清/中清/高清/超清,等级森严.

高级播放器当然有根据当前网络状态切换清晰度的功能,但是别忘了我们可怜的MediaPlayer还有其他低级播放器,即使是ExoPlayer,切换的逻辑也是嵌入到播放器内部,有时候还不是那么准,关键是开发者没法有效的掌控.

我们现在想将一个视频中的片源清晰度信息提取出来,然后供用户自由选择,这个可以做到吗?当然只是针对M3U8视频,那么自带服务器光环的视频不管啦,毕竟片源是你的,你想怎么玩就怎么玩.

先给一个播放链接:

代码语言:javascript
复制
https://newcntv.qcloudcdn.com/asp/hls/main/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/main.m3u8?maxbr=2048&minbr=400

python脚本解析一下这个视频url:

代码语言:javascript
复制
#!/usr/bin/python
# -*- coding: UTF-8 -*-

## 将网络url中的信息保存到本地


import requests

url='https://newcntv.qcloudcdn.com/asp/hls/main/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/main.m3u8?maxbr=2048&minbr=400'

def parseUrlInfo(url):
    if (not url.startswith('http')) and (not url.startswith('https')):
        return 'Error protocol'
    request = requests.get(url, timeout=10)
    print request.status_code
    result=''
    for line in request.iter_lines():
        result+=line+'\n'
    return result

print(parseUrlInfo(url))

解析结果如下:

代码语言:javascript
复制
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=460800, RESOLUTION=480x270
/asp/hls/450/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/450.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=870400, RESOLUTION=640x360
/asp/hls/850/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/850.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1228800, RESOLUTION=1280x720
/asp/hls/1200/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/1200.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=2048000, RESOLUTION=1280x720
/asp/hls/2000/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/2000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=2048000, RESOLUTION=1280x720
/asp/hls/2000/0303000a/3/default/fe76ae5bc1cb70ee0ca8a321392414d6/2000.m3u8

这个m3u8链接中有5个不同清晰度的片源,那我们展示的时候可以根据实际的网络状态给用户播放更加高清的视频,提升体验.

正常情况下的播放状态是下面图1,但是我们加上了选择清晰度,你可以选择高清甚至超高清播放,最后一张图显然更加高清了,观看体验更佳.

具体做法大家可以看一下源码: https://github.com/JeffMony/PlayerSDK

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 音视频平凡之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档