我想在我的网站上播放JW播放器中的谷歌驱动视频。我知道这是可能的,因为有很多网站这样做,例如fmovies
我已经尝试了多汁的API,但它不适合我
如果您只想从Google云端硬盘流式传输视频,那么可以这样做 - 您可以在此处看到一个有效的示例:
您可以通过在浏览器中右键单击并检查来确切了解它的编码方式
<video controls="controls" style="margin-bottom:20px;width:590px">
<source src="https://drive.google.com/uc?export=download&id=0B0JMGMGgxp9WMEdWb1hyQUhlOWs" type="video/mp4">
</video>
要以编程方式为Google云端存储创建签名网址,您需要按照以下链接的说明进行操作 - 我没有在此复制或总结它们,因为如果类似的AWS机制可以通过,则方法可以经常更改,它是最好总是查看最新的官方文档:
您可以尝试使用此Perl脚本来获取直接下载链接。如果要在JWPlayer中播放它,则必须从服务器运行脚本以获取链接,然后将该链接插入HTML。
https://circulosmeos.wordpress.com/2014/04/12/google-drive-direct-download-of-big-files/
Google云端硬盘服务托管的文件可以公开共享。然而,如果它们太大,Google页面会建议“Google云端硬盘无法扫描此文件中的病毒”并要求用户进行确认以便继续下载。
如果出于任何原因,您尝试无人值守地下载文件或在资源有限的环境中下载文件,这将阻止直接使用链接。
这是脚本
https://github.com/circulosmeos/gdown.pl
但是,脚本会将文件下载到文件系统,因此您必须对其进行修改,以便在最后一个URL重定向时,保存最终URL而不是下载它。
如果您有WordPress网站,您可以使用GD Player WordPress插件适用于谷歌驱动器Mp4等..它还可以在视频中设置字幕。我用它,对我来说效果很好。我希望这有帮助。
我试图这样做,我能够获取URL,但是然后有从服务器回流到客户端的问题,基本上使用puppeteer转到URL,单击播放按钮,等待视频eleemnt出现,获取“src”属性,然后(以某种方式通过XMLHttpRequest)将其流回服务器,然后让服务器(nodeJS)将其流回客户端,然后使用该URL嵌入视频(尚未完成)看到我的[非常谦虚]问题更多):
var puppeteer = require("puppeteer-core");
var http=require("https");
var fs=require("fs");
var fetch=require("fetch-node");
(async() => {
var browser = await puppeteer.launch({
executablePath:"./cobchrome/chrome.exe"
});
console.log("Got browser", browser);
var page = await browser.newPage();
console.log(page,"got page");
await page.goto("https://docs.google.com/file/d/0B9aMNh1shw_4VUVVWkF0TjRHWTA/preview?enablejsapi=1&playerapiid=player4");
console.log("went to page..");
var newClickID = ".ndfHFb-c4YZDc";
var clicker = await page.waitForSelector(newClickID);
await page.click(newClickID);
var frame = await page.waitForSelector("iframe[id=drive-viewer-video-player-object-0]");
var cf = await frame.contentFrame();
await cf.waitFor(() => !!document.querySelector("video"))
var video = await cf.$("video");
var videoEl = await cf.evaluate(
v =>{
var result = {};
for(var k in v) {
result[k] = v[k];
}
return result;
},
video
);
var src = videoEl.src;
await page.goto(src);
console.log("went to video page ", src);
var file = fs.createWriteStream("output/therebbe.mp4");
var count = 0;
page.on("console", c => {
var txt = (c.text()),
buff = Buffer.from(txt,"base64");
// var pic = fs.createWriteStream("output/frame"+count+".png");
// pic.write(buff);
// pic.end();
console.log("Consoling ",count++, buff);
// file.write(buff);
});
await page.evaluate(() => {
function _arrayBufferToBase64( buffer ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return window.btoa( binary );
}
function str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
var x = new XMLHttpRequest();
var url = location.href;
x.onreadystatechange = function(){
if(x.readyState == 200) {
console.log("done");
} else {
console.log(
_arrayBufferToBase64(
str2ab(x.response)
)
);
}
}
// x.responseType="arraybuffer";
x.open("GET",url,true);
x.send("");
});
// await browser.close();
})();
只是一个想法:你不需要JW播放器或PHP,这些天我已经全都融入了浏览器(HTML5)。以下是如何操作的示例(使用Google的Material Design UI)。只是简单的旧HTML / CSS / JS。