JavaFX in RPi 〜IFrame Youtube Player を作る〜

今回はHTML(とJS)でYoutubePlayerを作成します。
目的と実行手順は以下の通りです。

参考サイトはこちらのGoogle Developperページです。

IFrame Youtube Player

  1. HTMLでYoutubePlayerを作成
  2. JavaFXで作成したHTMLをロード
  3. RPiで起動するように設定
  4. TVなどで再生してみれるようにする

サンプルコードをコピペで動かしてみました。

<!DOCTYPE html>
<html>
  <body>
    <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

    <script>
      // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '360', // window.innerHeight * 0.9などで値を変更する
          width: '640',
          videoId: 'M7lc1UVf-VE',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
      }

      // 5. The API calls this function when the player's state changes.
      //    The function indicates that when playing a video (state=1),
      //    the player should play for six seconds and then stop.
      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(stopVideo, 6000);
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }
    </script>
  </body>
</html>

しかし、このままだと全画面表示でないのでカスタムしてやる必要があります。

カスタムする

ここで、変更したいのはボタンなどをつけて「チャンネルなどを変えることができる」ということをユーザーに気づいてもらえるようにすることです。
具体的には下のようなイメージです。。。
しかし、仮の状態です。

「▶︎」などをつけてみました。
とりあえずは、見た目のみです。

バージョンについて

今回作成するのは、特定のYoutubeの動画IDを15秒おきに再生するものを作成するので、正直のところは「▶︎」ボタンなどはいらないのです。。。
しかし、バージョンわけで表示できるような工夫をしてみたいと思います。
<Version1>
Youtubeを15置きに動画IDを変更して連続的に再生する、アプリが止まるまで続ける自動再生プレーヤ

<Version2>
Youtubeだけでなく、インターネットTVなど表示するテレビ局などを変更、チャンネルの変更などができるようにする。
当然、RPi(ラズパイ)をテレビに接続して表示できるようにする。(試行錯誤中ですが・・・・)

以上のように考えております。

でわでわ。。。



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す