我有一些嵌入代码,如:
<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显然由于某种原因不支持)。但这似乎是一个呼吁:
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填充数组中的播放器。
然后,在播放/暂停点击功能中,我可以像这样访问视频:
var player = players[index];
var state = player.getPlayerState();
if (state == 1) {
player.pauseVideo();
}
else {
player.playVideo();
}这不适用于Dailymotion,因为必须事先知道实际的DM视频ID (而不是HTML元素的ID)。我想知道是否有一种方法可以通过Javascript访问视频,而不知道视频ID?
发布于 2017-09-07 23:59:22
我不使用DailyMotion API,但是我做了这个实验,这可能对您有帮助。
看看下面的示例代码中的注释是否帮助您了解如何在JS函数中使用自己的按钮,以及如何处理视频"end“事件等等。
<!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。
https://stackoverflow.com/questions/46101544
复制相似问题