スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 実は、半透明になっている | トップページ | 誤検出の防止が難しいかも »

動画広告のスキップは簡単!?

ここの所、YouTube広告のスキップボタンを作者に代わって押してくれるプログラムを作ってみているのだが、広告には二種類あって、横長長方形のオーバーレイ広告のスキップは少し大変なのだが、動画広告のスキップは簡単かもしれない。

今日の時点でも、まだ、広告をスキップするプログラムは動作していないのだが、これは、実際に機能するプログラムは、まだ、作っていないからだ。

これは何故なのか、というと、作者的には、極力簡単に、かつ、間違いの少ないプログラムを作成したいと思っているので、まだ、YouTube広告の特徴を探していたりするからだ。

なので、まだ、実際にはプログラムは作成していないので、作成を始めると、現時点では気がついていない問題が出てくるかもしれないのだが、とりあえず、冒頭に書いたように、動画広告のスキップは簡単かなあ、と、思っている。

これは、動画広告には、画像認識しやすい、明確な特徴があるからなのだが、その特徴というのは、動画広告中には、少し赤みがかった独特の黄色の帯が動画の下の方に表示される、という事だ。

もっとも、通常状況でも、シークバーには、広告位置を示す場所に、同じ色の短い帯が表示されているので、この色の帯が存在するだけだと、動画広告中、という事にはならないのだが、この帯は、動画広告中には、時間と共に、長くなっていく訳だ。

もっとも、動画広告の中には、広告時間が30分もあるような、ある意味、はた迷惑な広告もあって、このような広告の場合、前述の帯が長くなるペースは自ずと遅くなるので、帯が長くなるのを検出出来るのには、数十秒を要する可能性もある。

ただし、動画広告にはもう一つの特徴もあって、それは、広告表示が始まったタイミングで自動的にシークバーが表示されるものの、放っておくと、それは自動的に隠されるのだが、隠された後は、前述の帯は動画領域の最下部に表示される、という事だ。

なので、動画広告の有無は、この赤みがかった黄色の帯が、数秒後に下に移動した、という事で、ほぼ完全に、検出可能になる訳だ。

そして、動画領域を検出できていれば、スキップボタンの位置はその下の方の右端、という事は判っているので、そこにマウスカーソルを合わせてクリックをエミュレーションするのも、難しくはない筈な訳だ。

まあ、ここが動画エリアだよ、というのを自動検出するのは、ある程度、時間を要するのだが、この点については、予め、大体の動画領域をユーザーに指定しておいて貰えれば、同じ様な扱いに出来る。

これは何故なのかというと、「広告をスキップ」というボタンにマウスカーソルを合わせると、そのカーソルイメージが通常の矢印から、指のイメージに変化するので、動画が表示されるであろうエリア上をマウスカーソルを動かしながらスキャンしていれば、カーソルの変化によって、そのボタン位置は特定できるからだ。

と、言うことで、まだ、プログラミングはしていないのだが、前述の通りなので、動画広告については、問題なく、スキップできそうだ。

まあ、「広告をスキップ」ボタンを、動画エリア内をマウスカーソルを動かしてスキャンして探す、なんて荒業を使うと、本来は表示されないシークバーが表示されてしまうのだが、動画広告中であれば、どの道、見ているコンテンツではない広告映像なので、大した問題ではない筈だし、どの道、広告表示時と、スキップ時には、手動操作時にもシークバーは表示される訳なので、作者的には、問題にはしない事にした訳だ。

上記の通りなので、やはり、問題になるのは、視聴中動画にオーバーレイ表示される横長の長方形の広告、という事になる。

この広告上でも、マウスカーソルは指のイメージに変化するので、動画再生中には、常に、それっぽい動画領域内でマウスカーソルを動かしていれば、カーソルが指に変化したタイミングで、広告が表示された、という事は判るのだが、そういう事をしてしまうと、通常の動画視聴中に、常にシークバーが表示される格好になってしまうし、マウスカーソルが動き回るのを見せられるのも鬱陶しい訳だ。

このため、オーバーレイ広告に対しても、少なくとも、その表示が始まった、というのを検出したい訳なのだが、中々、確実な方法が無い訳だ。

具体的には、広告が表示された瞬間のフレームでは、前フレームに対するオーバーレイ広告部分の差分は大きくなる筈なので、その差分を検出する、という手が使えそうなのだが、実際には、普通の動画でも、シーンチェンジ時には、前フレームに対して大きな差分が発生するので、差分の有無だけで、オーバーレイ広告が表示された、という事は認識できない訳だ。

逆に、オーバーレイ広告は画像変化が殆ど無い、という特徴から、前フレームから変化が無い領域を検知する、という手も使えそうなのだが、実際には、作者がよく見る、ゆっくり系の動画なんかでも、背景は殆ど変化しないので、前フレームから変化がない領域を検知する、というのも確実ではない訳だ。

なので、もう少し真面目に画像認識して、各フレームに対して、輪郭抽出処理を行い、それっぽい四角形が検出されたら、広告が表示された、と、認識しようか、という手もあるのだが、これについては、前述の2つよりは確実性があるのだが、広告画像が動画に溶け込んでしまう、みたいな感じで、輪郭抽出が上手く行かないケースも無い事はない。

そのような場合にも、広告の右上にある四角形は普通は、目立つ格好で表示されるので、この四角形の存在を検知する、という手もあるのだが、実際には、オーバーレイ広告には、広告自体が半透明になっていて、この四角形の描画も、通常の広告とは異なるモノも、たまにある。

と、言うことなので、オーバーレイ広告については、何となく、検出可能な様で、確実性が低いので、もう少し、何とかならないかと、調査中だ。

ちなみに、オーバーレイ広告は、ポップアップウインドウとして表示されている様にも見える。

なので、それが事実なら、何も画像認識なんかしなくても、表示されているウインドウの情報を調べれば、表示位置なんかも簡単に判明するのだが、実際には、オーバーレイ広告はウインドウではない訳だ。

つまり、オーバーレイ広告は、YouTubeの動画プレイヤーが描画している画像に過ぎないので、ウインドウ情報からは、その存在を確認できないので、プログラム的には、簡単には操作できない訳だ。

しかしまあ、全くどうしようもない、という状況でもないので、GW明けくらいまでは、プログラムの実現に向けて、さらなる検討を行ってみる事にする。

« 実は、半透明になっている | トップページ | 誤検出の防止が難しいかも »

2019年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google