首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当视频ID未知时,如何使用JS访问Dailymotion视频?

当视频ID未知时,如何使用JS访问Dailymotion视频?
EN

Stack Overflow用户
提问于 2017-09-07 16:49:23
回答 1查看 1.4K关注 0票数 0

我有一些嵌入代码,如:

代码语言:javascript
复制
<iframe id="video1" class="video" src=""//www.dailymotion.com/embed/video/VIDEO_ID?autoPlay=1&wmode=transparent&loop=1&controls=0&showinfo=0&api=1&endscreen-enable=0&mute=1" allowfullscreen="true" frameborder="0" width="560" height="349"></iframe>

我试图访问这个视频使用Javascript,但视频ID是不知道在事先(它必须能够设置在我们的CMS,并由任何编辑器更改)。此外,有可能在页面上有多个视频。在我的.js文件中硬编码视频ID是不可能的.

使用Javascript,我需要编写一个自定义播放/暂停函数(传入他们单击的按钮对象),还需要检测视频何时结束并重新启动它(模仿循环,Dailymotion显然由于某种原因不支持)。但这似乎是一个呼吁:

代码语言:javascript
复制
DM.Player(document.getElementById(iframeID), { video: VIDEO_ID})

要求视频的ID是已知的(我知道视频所在的iFrame ID,但显然这不足以像其他视频平台那样访问播放器)。

然后,我需要能够创建一个函数来调用播放或暂停,这取决于用户是否在特定视频上单击了play/pause按钮。我的Javascript知识不是很好,但是我已经能够通过了解iframe ID来与其他平台一起工作。如果我硬编码视频ID,只有当页面上有一个视频,并且我不尝试“循环”视频时,播放/暂停才能工作。

这是一个私人视频,如果这重要-我们希望它只在我们的网站上,而不是在每日运动。

伪代码受到了极大的赞赏,因为我发现他们的API文档对于新来的人来说有点不完整(比如没有指定参数是必需的还是可选的,以及没有列出可用的选项,比如在DM.Player初始化期间的params和事件)。

编辑:这里的是如何使用其他视频托管服务(YouTube、Vimeo、Brightcove等)访问视频API的。

我构建了一个具有特定类名的所有HTML元素的数组(回想一下,可以有多个视频)。假设类名是".video“,所以我在页面上构建了一个包含所有".video”的数组以及相应的HTML。然后,我使用document.getElementById填充数组中的播放器。

然后,在播放/暂停点击功能中,我可以像这样访问视频:

代码语言:javascript
复制
var player = players[index];
var state = player.getPlayerState();
if (state == 1) {
     player.pauseVideo();
}
else {
     player.playVideo();
}

这不适用于Dailymotion,因为必须事先知道实际的DM视频ID (而不是HTML元素的ID)。我想知道是否有一种方法可以通过Javascript访问视频,而不知道视频ID?

EN

回答 1

Stack Overflow用户

发布于 2017-09-07 23:59:22

我不使用DailyMotion API,但是我做了这个实验,这可能对您有帮助。

看看下面的示例代码中的注释是否帮助您了解如何在JS函数中使用自己的按钮,以及如何处理视频"end“事件等等。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>

<!-- 1. Load DailyMotion API (Javascript) -->
<script src='https://api.dmcdn.net/all.js'> </script>

<!-- 2. Create container for DM Player instance  -->
<div id='player'></div>

<!-- 3. Javascript stuff goes here -->
<script>

    //Set VIDEO_ID (retrieve or update from your CMS)
    //**example** var VIDEO_ID = get_video_id.php **where PHP returns/echo the text of ID**

    var VIDEO_ID = "xwr14q"; //update this via your CMS technique

    //Create DM Player instance//
    var player = DM.player(document.getElementById('player'), {
    video: VIDEO_ID,
    width: "100%", height: "100%",
    params: { autoplay: false, mute: true }


    });

    //Handle video ending (seek back to zero time)//
    player.addEventListener('end', function (evt) { evt.target.currentTime = 0; evt.target.play() } );

    //Control functions for DM Player instance//
    function func_Play()
    { player.play(); }

    function func_Pause()
    { player.pause(); }

</script>



<p>

<!-- Buttons for play pause -->
<button onclick="func_Play()"> PLAY </button>

<button onclick="func_Pause()"> PAUSE </button>

</p>

</body>
</html>

也是关于

"...It有可能在页面上有多个视频“

做一些“体验品质”的测试。只要确保你的用户不介意同时运行多个循环视频(例如:可能会减慢你的页面/他们的浏览器,或者如果在移动的话会耗尽他们的数据)。

为了处理多个视频,我只需将每个视频播放器放在它自己的HTML页面中(如上面所示的代码),然后在主页中加载指向每个播放器的HTML的多个iframes。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46101544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档