在JW播放器中播放Google Drive Video并获取Google Drive Video的直接链接

时间:2017-07-02 16:28:42

标签: php video google-drive-api streaming

5 个答案:

答案 0 :(得分:0)

如果您只是想从Google云端硬盘流式传输视频,那么可以这样做 - 您可以在此处看到一个有效的示例:

您可以通过在浏览器中右键单击并检查来确切了解其编码方式

<video controls="controls" style="margin-bottom:20px;width:590px">    
         <source src="https://drive.google.com/uc?export=download&amp;id=0B0JMGMGgxp9WMEdWb1hyQUhlOWs" type="video/mp4"> 
</video>

要以编程方式为Google云存储创建签名网址,您需要按照以下链接的说明进行操作 - 我没有在此复制或总结它们,如果类似的AWS机制可以通过,则该方法可能经常更改最好始终查看最新的官方文档:

答案 1 :(得分:0)

您可以尝试使用此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而不是下载它。

答案 2 :(得分:0)

如果您拥有WordPress网站,则可以使用 GD Player WordPress插件与Google Drive Mp4等配合使用。它还可以在视频中设置字幕。我使用它,对我来说效果很好。我希望这会有所帮助。

答案 3 :(得分:0)

我试图这样做,我能够获取URL,但是存在将其从服务器流回客户端的问题,基本上是使用puppeteer转到URL,单击播放按钮,等待要显示视频元素,请获取“ 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();
})();

答案 4 :(得分:-1)

只是一个想法:你不需要JW播放器或PHP,这些天我已经全都融入了浏览器(HTML5)。以下是如何操作的示例(使用Google的Material Design UI)。只是简单的旧HTML / CSS / JS。

https://github.com/rhroyston/mdl-audio