【问题标题】:Youtube API detecting advertisementsYoutube API 检测广告
【发布时间】:2017-02-20 11:30:33
【问题描述】:

有没有办法检测 youtube 广告何时播放以及何时结束?

类似:

function onPlayerStateChange(event) {
   if(event.data == advertisement) {
      console.log("Advertisement is playing");
   }
   if(event.data == advertisementIsOver) {
      console.log("Advertisement has finished playing");
   }
}

我在这里看到了问题:

What is the YouTube's PlayerState during pre-roll ad?

我想知道 youtube api 是否有任何更新?另外,有人可以提供一些 youtube 广告检测器的代码吗?我不确定在播放广告时如何可靠地捕捉到。

【问题讨论】:

    标签: youtube youtube-api youtube-data-api


    【解决方案1】:

    您可能想查看此documentation。据说可以使用onAdStarted(),在广告播放开始时调用。

    这里有一个相关的 forumtutorial 可能会有所帮助。

    【讨论】:

    • 这似乎只适用于 youtube android api。您知道对 onAdStarted() 的任何支持或 youtube iframe 的任何等效方法吗?
    • @shell 同样的问题在这里:你有没有找到一种可以应用于 te youtube web iframe api 的方法?
    • @shell 可能使用 youtube 数据 api,它比其他基于 css /js 的解决方案更稳定*
    【解决方案2】:

    有点晚,但迟到总比没有好......

    我目前正在开发一个专门针对 YouTube 视频播放操作的 chrome 扩展程序。这是我发现的一种检测广告是否正在播放的方法:

    注意:我使用的所有类和 Id 都可能随着 YouTube 开发者的更改而更改。

    1) 先获取html5视频元素:var mainVideo = document.getElementByClassName("html5-main-video")。目前没有它的元素 ID,但它总是有类 html5-main-video

    2) 为视频准备好播放设置一个事件处理程序,它将检查它是否是广告,并在新视频加载并准备好播放时触发mainVideo.oncanplay = isVideoAnAd

    3) 当一个广告正在播放时,进度条是黄色的,或者更确切地说是rgb(255, 204, 0),这个属性很容易使用 jQuery 进行比较

    function isVideoAnAd () {
         if($(".ytp-play-progress").css("background-color") === "rgb(255, 204, 0)
         {
            return true;
         }}
    

    要获得更可靠的结果,您还可以检查movie_player 元素classList 以查看是否为contains("ad-showing")。顺便说一句,movie_player 是 id。

    提示:我通过检查元素找到了所有这些

    这确实是我发现无需深入 YouTube API 即可检测广告的唯一可靠方法。

    【讨论】:

      猜你喜欢
      • 2013-08-17
      • 2013-11-24
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多