在 HTML5 视频上插入广告

Lew*_*wis 6 html video

如何在主视频播放之前在 html5 视频标签上插入广告?是否有任何开源工具可以使这更容易?有什么参考资料可以指导我去那里吗?

它正在使用此代码:

<script type="text/javascript">
   // listener function changes src
   function myNewSrc() {
      var myVideo = document.getElementsByTagName('video')[0];
      myVideo.src="../main.webm";
      myVideo.load();
      myVideo.play();
    }

   // function adds listener function to ended event -->

    function myAddListener(){
     var myVideo = document.getElementsByTagName('video')[0];
     myVideo.addEventListener('ended',myNewSrc,false);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但是当它播放第二个时我不能。它显示了海报。我如何摆脱海报?

nat*_*e75 6

这是解决方案的快速开端,至少应该为您指明正确的方向。这为您提供了一个带有 init 方法的单例,该方法在调用时会在特定视频元素上设置预卷。

var adManager = function () {
    var vid = document.getElementById("myVid"),
        adSrc = "videos/epic_rap_battles_of_history_16_adolf_hitler_vs_darth_vader_2_1280x720.mp4",
        src;

    var adEnded = function () {
        vid.removeEventListener("ended", adEnded, false);
        vid.src = src;
        vid.load();
        vid.play();
    };

    return {
        init: function () {
            src = vid.src;
            vid.src = adSrc;
            vid.load();
            vid.addEventListener("ended", adEnded, false);
        }
    };
}();
Run Code Online (Sandbox Code Playgroud)

但是,这里没有涵盖许多内容。例如,如果您将 init 方法设置为在开始播放视频时调用,则需要保留一个标志来指示是否有广告正在播放,以便播放处理程序在您从将广告添加到内容(在 load() 调用之后需要“播放”事件才能获得无缝播放)。

我们在我们的视频播放项目中使用了类似的东西,并且大多数视频广告服务都为基于 HTML 的视频播放(而不是 Flash 视频播放)执行类似的操作。

它相对简单,但您只需要确保跟踪何时应该触发事件回调以及何时添加和删除这些回调。

另一件要考虑的事情是“结束”事件的不可靠性。我还没有弄清楚它何时以及在哪些平台上持续触发,但这是一个众所周知的问题。一个可能的解决方案是改用“timeupdate”并测试“currentTime”属性是否比“duration”属性少大约一秒,这样您就知道自己在视频的末尾。