カテゴリー
UIデザイン

ScrollyVideo.js – ブラウザのスクロールと動画ファイルを簡単に同期できるライブラリ

ScrollyVideo.js は、ブラウザの画面効果のためのライブラリで、mp4 で置いた動画ファイルをページのスクロールと連動してくれます。

と、言葉で書いても伝わってる気がしません。ScrollyVideo.js のサイトで見るのが一番わかりやすいと思います。

このデモでは、サンフランシスコのゴールデン・ゲート橋をドローンで空撮した mp4 ファイルが使われています。ページを下にスクロールしていくと、動画が先に進むため、スクロールに合わせてみている自分が前に飛んでいるような感覚が得られます。

デモでは単純なスクロールとの同期だけでなく、スクロールの途中でテキストボックスが流れたりもしていますが、vanilla JavaScript のデモ(ダウンロードしてブラウザで開くだけで動きます)では、非常に短いHTMLのコードで基本的な部分が動くのがわかります。

自分で撮影した mp4 ファイルでももちろん動きましたが、あまりこのライブラリで見栄えのするような動画がなく。

デモのように前後に進む動画がおそらくよく合うんでしょう。部屋を360度ぐるっと回ってみる動画とかを表示してみましたがあまりいいものになりませんでした。

ライブラリはプレーンなJavaScript の他、React, Svelte, Vue からも呼び出せるようになっていて、それぞれのデモファイルがあります。

via FlowingData

カテゴリー
プライバシー

観光地カメラの動画からインスタグラマーの撮影時の様子を特定する

ザ・フォロワー(The Follower)は、ベルギーのアーチストでプライバシーや人工知能などをテーマにしているドリーズ・デポーターさん(Dries Depoorter)による新プロジェクト。街中にあるウェブカメラの映像の録画を使って、その付近で撮影した写真をインスタグラムに公開しているユーザーを見つけることができる、というのを示しています。

この場所探しましたよ。アイルランド ダブリンにあるテンプルバーという有名なバーのようです。

デポーターさんが使ったのと同じものかわかりませんが、テンプルバーの前をライブ中継しているカメラもネットで見つけました。

手順は以下の通りだそう。

  1. ネットに公開されているライブカメラの画像を数週間録画しておく
  2. ライブカメラの場所でタグ付けされている Instagram の写真を全部取得
  3. 二つのデータをプログラムをまわして、同じ人物を見つける

1と2は以前からでもできたでしょうけど、画像から人物の特徴を取り出す技術が進んだことで3が簡単にできるようになった、ということがわかりますね。

プロジェクトサイトには6人のインスタグラムユーザーの実例が展示されています。また、今後見つかったものはソーシャル(Instagramなど)に上げていくということ。

Instagram に上げている人はたくさん撮って一番いいのを上げているのかもしれません。動画と突き合せれば、何分間そこにいたかとかポーズを何種類取ったとか、同行者や撮影者もわかってしまいますね。

ウェブカメラが24時間動いていて、動画がずっとインターネットに公開されているというのは限定された場所でしょう。少なくとも今は。十分なストレージとソフトウェアがあれば、知人や有名人の写真を使ってそれらの場所にその人がいつ現れたか、ということを個人が調べられるようになってきたという警鐘を、このプロジェクトは鳴らしているのだと思います。

カテゴリー
データ可視化

バスケットボール中継のハイライト動画をPythonで作る

Python で NBAハイライト動画を自動生成するという記事が面白かったのでご紹介。

ゲームをまるごと観戦する暇がない時、ハイライト動画を見て済ますスポーツファンは多いでしょう。ハイライト動画は球団やテレビ局などが編集して出してきますが、必ず見られるわけでも、自分が見たい粒度のハイライト動画が必ずあるわけでもないかもしれません。

ノーム・エフラットさん(Noam Ephrat)が自分だけのハイライト動画を自動で作るために使ったのは、Python、NBA公式のAPI、録画したゲーム動画、OCRライブラリ。

NBAのAPI(参考) では何分何秒にどちらのチームの誰がどういうプレイをして、シュートが入ったとか外れたとかいうプレイバイプレイ(play-by-play, PBP)の情報が公開されています。日付、ゲームID、ピリオド(クオーター)を指定するとJSONが返ってきます。これが一つ目の要素。

https://data.nba.net/data/10s/prod/v1/20220201/0022100784_pbp_1.json

そして、録画した動画をフレームごとに切り出して、中継中に表示されたゲーム時計の部分を OCR ライブラリの Tesseract でピリオドやゲーム時間を抽出します。これが二つ目の要素

あとは、プレイバイプレイの重要シーンの発生した時刻に合わせて、動画のフレームを切り出し、切り出したところをつなげていくと、ゲームが動いたところだけがまとまったハイライト動画を作ることができたということ。

ざっと見てみて、プレイバイプレイのデータにあるところだけだと、どうしても点が増えたシュート成功の場面が多くなるのかな、とも思いましたが、人間が編集したハイライト動画でも成功シーンが多いので気のせいかもしれません。

作ったハイライト動画を公開するのは著作権的にだめだと思いますが、個人でハイライトを作って観るのは問題なさそうでは。

自分の基準で抜き出すところを選べるからには、

  • ひいきチームの得点シーンばかりを集めたり
  • 応援する特定の選手の絡むシーンだけを集めたり
  • 点差や時間を考えて、より劇的にゲームが動いたシーンだけを集めたり(これは人が編集する時と似た結果になるかも)
  • 自分の使える時間に応じてハイライト動画の長さを指定して変えたり

など、よりパーソナライズされたハイライト動画を作れる可能性もありますね。

バスケットボールという競技が特に時計が重要で、常時正確な時刻が中継に表示されていることや、APIで提供されるゲームログにも時刻情報がふんだんに含まれているという点も、うまく自動生成にマッチしているというのもありそうですね。