var flashvars = {
f: 'ckplayer/m3u8.swf', //使用swf向播放器发送视频地址进行播放
a: 'video/m.m3u8', //m3u8文件
c: 0, //调用 ckplayer.js 配置播放器
p: 1, //自动播放视频
s: 4, //flash插件形式发送视频流地址给播放器进行播放
lv: 0, //注意,如果是直播,需设置lv:1
loaded: 'loadedHandler'
}
昨天,要将下载的 m3u8 文件改成 “m.m3u8" 这种格式,再将 a 设置成 video/m.m3u8 ,才能播放视频,今天却播放不了了,而且不断报错,如下图:
var flashvars = {
f: 'ckplayer/m3u8.swf', //使用swf向播放器发送视频地址进行播放
a: 'video/m3u8', //m3u8文件
c: 0, //调用 ckplayer.js 配置播放器
p: 1, //自动播放视频
s: 4, //flash插件形式发送视频流地址给播放器进行播放
lv: 0, //注意,如果是直播,需设置lv:1
loaded: 'loadedHandler'
}
然后,我将 m.m3u8 格式改回成 m3u8,再将a设置成video/m3u8,视频反而可以播放了。浏览器控制台显示如下图:
无语了,下午,m.m3u8格式又可以播放视频了……
var flashvars = {
f: 'ckplayer/m3u8.swf', //使用swf向播放器发送视频地址进行播放
a: encodeURIComponent(decodeURIComponent('http://pl.youku.com/playlist/m3u8?ts=1422522760&keyframe=0&vid=XODc1NzMyNTA0&type=mp4&ep=cSaWGEyPVc4F4CDYgT8bNS60ciNbXJZ1gkyE%2F5gfScVAOejQmjbUxQ%3D%3D&sid=342252305537912b2f6dd&token=3852&ctype=12&ev=1&oip=3663591661')), //m3u8文件
c: 0, //调用 ckplayer.js 配置播放器
p: 1, //自动播放视频
s: 4, //flash插件形式发送视频流地址给播放器进行播放
lv: 0, //注意,如果是直播,需设置lv:1
loaded: 'loadedHandler'
}
刚刚解决了外部链接播放m3u8视频的问题。
例如:我们得到了一个外部m3u8链接1
http://pl.youku.com/playlist/m3u8?ts=1422522760&keyframe=0&vid=XODc1NzMyNTA0&type=mp4&ep=cSaWGEyPVc4F4CDYgT8bNS60ciNbXJZ1gkyE%2F5gfScVAOejQmjbUxQ%3D%3D&sid=342252305537912b2f6dd&token=3852&ctype=12&ev=1&oip=3663591661
这个链接中有一部分被进行了URI编码
首先,我们要用 decodeURIComponent() 方法对其解码,得到如下链接2
http://pl.youku.com/playlist/m3u8?ts=1422522760&keyframe=0&vid=XODc1NzMyNTA0&type=mp4&ep=cSaWGEyPVc4F4CDYgT8bNS60ciNbXJZ1gkyE/5gfScVAOejQmjbUxQ==&sid=342252305537912b2f6dd&token=3852&ctype=12&ev=1&oip=3663591661
http%3A%2F%2Fpl.youku.com%2Fplaylist%2Fm3u8%3Fts%3D1422522760%26keyframe%3D0%26vid%3DXODc1NzMyNTA0%26type%3Dmp4%26ep%3DcSaWGEyPVc4F4CDYgT8bNS60ciNbXJZ1gkyE%2F5gfScVAOejQmjbUxQ%3D%3D%26sid%3D342252305537912b2f6dd%26token%3D3852%26ctype%3D12%26ev%3D1%26oip%3D3663591661
这里需要注意的是,不能直接对链接1进行URI编码,必须先解码再编码。
因为最开始得到的链接可能是部分变编码了的,如果对这种链接直接编码,得到的链接,和先解码再编码得到的链接是不一样的。
例如,我们直接对链接1编码,得到的链接4:
http%3A%2F%2Fpl.youku.com%2Fplaylist%2Fm3u8%3Fts%3D1422522760%26keyframe%3D0%26vid%3DXODc1NzMyNTA0%26type%3Dmp4%26ep%3DcSaWGEyPVc4F4CDYgT8bNS60ciNbXJZ1gkyE%252F5gfScVAOejQmjbUxQ%253D%253D%26sid%3D342252305537912b2f6dd%26token%3D3852%26ctype%3D12%26ev%3D1%26oip%3D3663591661
对比一下,链接4和链接3是不一样的,encodeURIComponent() 对 百分号% 再次进行了编码。
我已经很久没接触这方面的内容了,相关的知识点早已忘记,所以各位的问题都回答不了了。2016-12-14