Php code will not work here and even meaningless, because it will return the result for server side.
This is my Javascript/Ajax code.
Unfortunately, you should use Access-Control-Allow-Origin extension in Chrome browser.
First, please see this screenshot of console window.
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script src="https://content.jwplatform.com/libraries/YOUR-JW-PLAYER-LICENSE-KEY.js"></script>
</head>
<body>
<p id="urls"></p>
<div id="myElement"></div>
</body>
<script>
var docid = "0B4Mn0g4wWmQ1ZThycVhOcDJQc2c";
var api_url = "https://docs.google.com/get_video_info";
var ans = {};
var url = "";
getGoogleVideoUrl();
function getGoogleVideoUrl(){
$.ajax({
url: api_url,
type: "get",
data: {
docid: docid,
},
success: function(response) {
//
// get value of which key is 'fmt_stream_map'.
//
var fmt_stream_map = getQueryVariable(response, 'fmt_stream_map');
//
// split my comma
//
var maps = fmt_stream_map.split("%2C");
//
// loop all links,
//
var purl = "";
for (x in maps) {
var res = decodeURIComponent(decodeURIComponent(maps[x])).split('|');
// purl = res[1].replace(new RegExp("/\/[^\/]+\.google\.com/", 'g'),"//redirector.googlevideo.com/");
// purl = res[1].replace(new RegExp("\.google\.com/", 'g'),".googlevideo.com/");
purl = res[1];
//.replace(/.c.docs.google.com/g,".googlevideo.com")
//.replace(/app=explorer/g,"app=storage")
//.replace(/key=ck2/g,"key=cms1")
//.replace(/&cp=/g,"&api=")
//.replace(/,cp&/g,',api&')
//.replace(/,cp,/g,',api,')
//.replace(/=cp,/g,'=api,')
//.replace(/&sparams=/g,'&cms_redirect=yes&sparams=');
switch (parseInt(res[0])) {
case 5:
quality = 'Low Quality, 240p, FLV, 400x240';
break;
case 17:
quality = 'Low Quality, 144p, 3GP, 0x0';
break;
case 18:
quality = 'Medium Quality, 360p, MP4, 480x360';
break;
case 22:
quality = 'High Quality, 720p, MP4, 1280x720';
break;
case 34:
quality = 'Medium Quality, 360p, FLV, 640x360';
break;
case 35:
quality = 'Standard Definition, 480p, FLV, 854x480';
break;
case 36:
quality = 'Low Quality, 240p, 3GP, 0x0';
break;
case 37:
quality = 'Full High Quality, 1080p, MP4, 1920x1080';
break;
case 38:
quality = 'Original Definition, MP4, 4096x3072';
break;
case 43:
quality = 'Medium Quality, 360p, WebM, 640x360';
break;
case 44:
quality = 'Standard Definition, 480p, WebM, 854x480';
break;
case 45:
quality = 'High Quality, 720p, WebM, 1280x720';
break;
case 46:
quality = 'Full High Quality, 1080p, WebM, 1280x720';
break;
case 82:
quality = 'Medium Quality 3D, 360p, MP4, 640x360';
break;
case 84:
quality = 'High Quality 3D, 720p, MP4, 1280x720';
break;
case 102:
quality = 'Medium Quality 3D, 360p, WebM, 640x360';
break;
case 104:
quality = 'High Quality 3D, 720p, WebM, 1280x720';
break;
default:
quality = 'transcoded (unknown) quality';
break;
}
ans[quality] = purl;
}
console.log(ans);
$('#urls').html(JSON.stringify(ans));
url = ans[Object.keys(ans)[0]];
build_player();
},
error: function(xhr) {
//Do Something to handle error
}
});
}
function build_player(){
var playerInstance = jwplayer("myElement");
playerInstance.setup({
file: url,
type: "mp4",
width: 800 ,
height: 600,
});
}
function getQueryVariable(query, variable) {
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == variable) {
//return decodeURIComponent(pair[1]);
return pair[1];
}
}
console.log('Query variable %s not found', variable);
return "";
}
</script>
</html>
This code works basically, but doesn't play in jwplayer component.
However, if you enter this URL, "https://docs.google.com/get_video_info?docid=0B4Mn0g4wWmQ1ZThycVhOcDJQc2c", directly in chrome browser, get JSON file , parse it manually, use one of URLs directly in this code as jwplayer's file url, it works perfectly, although it contains "app=explorer" tag in itself.
I'm not sure why this happens.
So I tried to compare 2 links and some parameters is different. The first one is from above code and not working, the 2nd JSON file directly and working.)
ei=hJ5yWaHCKYXb-wWona2YBA
ei=KZ5yWZSkK4aFqgXAwpoo
susci=o-AC34EOoA1Wst0Heh0U_bP9epqR8K9s4UBhwlqmsxKZKwAOA
susci=o-AH82qbGL8BcWQ3BPybbvZyuNBiDd2Uasz4J0ZNXJCZwobPje
expire=1500698308
expire=1500698217
cp=QVNFUkdfV1NOSVhOOnhwOWFybUloWXNX
cp=QVNFUkdfV1JPSFhOOmpURGRUeUt3eVpv
signature=3D306FD9D9ADA683D313AABDFE057B608A6F2A39.8BB3A9C321B6BEAC8D1D5AEED2F25511DF97CE2B
signature=2C2465BDFC4D9CCFD0D4A42F38BAEF44D55AFDF1.A916937113445ABB90D18B3AE89600729CFADDE6
Why first one is not working while 2nd is working?
Any idea of this?