【问题标题】:insert ads on HTML5 video在 HTML5 视频中插入广告
【发布时间】:2011-07-12 22:21:08
【问题描述】:

如何在主视频播放之前在 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>

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

【问题讨论】:

  • 我讨厌这个。 我是认真的。在视频结束后展示广告,而不是在它开始之前。
  • HTML 5 video or audio playlist 的可能重复项
  • 在观看 15 秒剪辑之前,没有什么比看 30 秒广告更好的了,是吗?
  • @David 不是 strict 重复项,但它非常非常接近。
  • 足够接近以至于解决方案是相同的。 :)

标签: html video


【解决方案1】:

这是解决方案的即兴开始,至少应该为您指明正确的方向。这为您提供了一个带有 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”属性少大约一秒,以便您知道自己在视频的结尾。

【讨论】:

    【解决方案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>
    

    【讨论】:

    【解决方案3】:

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

    http://popcornjs.org/documentation

    【讨论】:

      【解决方案4】:

      @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>

      【讨论】:

        【解决方案5】:

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

        这个问题是 8 年前提出的,多年来情况发生了变化,现在我们有了 VASTVPAIDVMAP 等协议,和 MRAID

        了解他们here

        【讨论】:

          猜你喜欢
          • 2013-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-07
          相关资源
          最近更新 更多