在HTML5视频上插入广告

时间:2011-03-10 17:54:13

标签: html5 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>

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

5 个答案:

答案 0 :(得分:4)

这是一个快速解决方案的袖口开始,至少应该指向正确的方向。这为您提供了一个带有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);
        }
    };
}();

但是,这里有很多事情没有涉及。例如,如果您在开始播放视频时设置要调用的init方法,则需要保留一个标记,指示是否有广告播放,以便播放处理程序在您转换时不会执行任何操作广告到内容(在load()调用后需要“播放”事件才能获得无缝播放)。

我们在视频播放项目中使用类似的内容,大多数视频广告服务都是基于HTML的视频播放(与Flash视频播放相反)。

这是相对简单的,但你必须确保跟踪应该何时触发事件回调以及何时添加和删除这些回调。

另一件需要考虑的事情是“结束”事件的不可靠性。我还没有弄清楚它何时以及在哪个平台上一直着火,但这是一个众所周知的问题。一种可能的解决方案是使用“timeupdate”来测试“currentTime”属性是否比“duration”属性小一秒左右,这样你才能知道你在视频结尾处是正确的。

答案 1 :(得分:2)

抱歉,我现在无法测试此代码,但理论上这应该可行。

<script>
// you will want to do checking here to see if the browser supports the video element
document.getElementById('video').addEventListener('ended', function()
{
    // the ad finished playing so update the src attribute to the real video
    document.getElementById('video').src = 'mainvideo.webm';
});
</script>

<video id="video" src="ad.webm">
</video>

答案 2 :(得分:1)

您可能想看看Popcorn.js可以做些什么。它允许您与Html5视频和叠加文本以及许多其他很酷的东西进行交互:

http://popcornjs.org/documentation

答案 3 :(得分:1)

@ natlee75对我来说这没用 我把它改成了这个:

$( document ).ready(function() {
var adManager = function () {
    var vid = document.getElementById("vid1564730217"),
        adSrc = "http://www.sample-videos.com/video/mp4/240/big_buck_bunny_240p_1mb.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);
			
        }
    };
}().init();		
		});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<video id="vid1564730217" src="http://techslides.com/demos/sample-videos/small.mp4" width="100%" style="max-height:600px;" poster="http://orperry.com/sample/wp-content/uploads/2015/12/sample-logo.png" controls>
	<source src="http://techslides.com/demos/sample-videos/small.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

答案 4 :(得分:0)

  

您是否曾经在线观看过视频并看到横幅广告显示在   视频顶部?或观看视频并看到广告出现了一半   通过?富媒体广告在使用   移动应用?

这个问题是在8年前提出的,多年来情况已经发生了变化,现在我们有了诸如 VAST VPAID VMAP ,和 MRAID

了解它们here