JSFiddle - React, Tailwind, and code Playground
by rong cao
HTML
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script src="http://api.html5media.info/1.1.6/html5media.min.js"></script>
<video id="video" src="video.mp4" width="520" height="300" controls preload></video>
JavaScript
// http://v.youku.com/v_show/id_XNjc1MjQwNTQ4.html
var _id = 'XNjc1MjQwNTQ4';
function getFileIDMixString(seed) {
var source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890".split(''),
mixed = [],
index;
for (var i = 0, len = source.length; i < len; i++) {
seed = (seed * 211 + 30031) % 65536;
index = Math.floor(seed / 65536 * source.length);
mixed.push(source[index]);
source.splice(index, 1);
}
return mixed.join('');
};
function getFileID(fileid, seed) {
var mixed = getFileIDMixString(seed),
ids = fileid.split("*"),
realId = [],
idx;
for (var i = 0; i < ids.length; i++) {
idx = parseInt(ids[i], 10);
realId.push(mixed.charAt(idx));
}
return realId.join('');
};
function jsonp(url, callback) {
$.ajax({
url: url,
dataType: 'jsonp',
jsonp: '__callback',
type: 'GET',
success: function (param) {
callback(param);
}
});
}
jsonp('http://v.youku.com/player/getPlaylist/VideoIDS/' + _id + '/Pf/4',
function (param) {
var d = new Date(),
fileid = getFileID(param.data[0]['streamfileids']['3gphd'], param.data[0]['seed']),
sid = d.getTime() + "" + (1E3 + d.getMilliseconds()) + "" + (parseInt(Math.random() * 9E3)),
k = param.data[0]['segs']['3gphd'][0]['k'],
st = param.data[0]['segs']['3gphd'][0]['seconds'];
mp4 = 'http://f.youku.com/player/getFlvPath/sid/' + sid + '_00/st/mp4/fileid/' + fileid + '?K=' + k + '&hd=1&myp=0&ts=1156&ypp=0&ymovie=1';
console.log(mp4);
$('#video').attr('src', mp4);
});