開発入門 > Unity > Unityでビデオストリーミングをテクスチャとして表示する(アセットなしでOK)

Unityでビデオストリーミングをテクスチャとして表示する(アセットなしでOK)

テクスチャ上でビデオを再生するにはAVProアセットEasy Movie Texture (Video Texture)などを使う方法がありますがUnityのMovieテクスチャを使えば追加アセット無しでも実現することが可能です。

ウェブサーバーからストリーミングされる動画をテクスチャに貼るにはどうしたらいいものかと調べていたらUnity標準のMovieテクスチャでも実現できることがわかった。ただし、動画ファイル形式はogg形式でないとダメなようだ。

ウェブサーバー上のoggビデオファイルをストリーミング再生する

下記コードをOggVideoStreamingTexture.csとして保存する。

任意のGameobjectに貼り付けます。

OggVideoURL:ストリーム再生するoggビデオのURL
サンプルで http://www.unity3d.com/webplayers/Movie/sample.ogg を利用して試そう

GameobjectForVideoTexture:ビデオを表示するオブジェクト。未指定の場合はスクリプトをアタッチしたオブジェクトに動画が表示されます。

ogg1

実行すると動画が表示されます。サーバーからダウンロード途中でも再生がスタートします。エラーが2つ出ますが無視してOKです。海外のフォーラムでも話題にでていましたがUnityのバグっぽい。

ogg2

 

ogg形式へビデオファイルのコンバート方法

上記スクリプトでの動画ストリーミング再生には、動画のファイル形式がogg形式である必要があります。各種ビデオファイルをogg形式へ変換するスクリプトを作成したので紹介しておく。スクリプトはVBScriptで記述したWidnows Scripting Hostです。(VBScriptを拡張子.vbsで保存すればそのままWindowsで実行できて便利)

  1. ffmpegのダウンロード
    ffmpeg公式サイトからWindows用バイナリをダウンロード
    zipファイルを解凍する
  2. 下記スクリプトをConvert_video_to_ogg.vbsとして保存。1で解凍したffmpegフォルダに設置する
  3. Convert_video_to_ogg.vbs をダブルクリックして実行

説明文書が表示されるのでOKを押す

ogg3

ビデオファイルを選択する

ogg4

後は、変換されるのを待つ。oggファイルは元ビデオと同じフォルダに生成されます。

ogg5

ffmpegとogg変換スクリプトのセットをこちらに置いておきます( GPL 3.0ライセンスによる再配布)

zipiconffmpeg-20160610-git-0a9e781-win32-static_with_ogg_video_convert_script.zip

 

 

カテゴリー: Unity
4 comments on “Unityでビデオストリーミングをテクスチャとして表示する(アセットなしでOK)
  1. チャソ より:

    from2001さん はじめまして

    いきなりの質問で申し訳ございません。
    この記事を参考にさせて頂いて、PCのカメラからLIVEで映像をhttpサーバーにogg形式で上げ、別PCのUnityのobjectにダウンロードしてきて、テクスチャーとして貼り付けたいと思い、実行してみたのですが、サンプルの http://www.unity3d.com/webplayers/Movie/sample.ogg とは違ってうまく再生することが出来ません。
    どうやら
    while (!movieTexture.isReadyToPlay)
    {
    yield return 0;
    }
    を抜けること出来ていないみたいです。
    カメラからの映像配信を止めたら、whileループを抜け今までカメラで撮っていた映像が流れだしました。これはつまり、リアルタイムでの映像はリアルタイムでテクスチャーとして持ってくることはできないのでしょうか?また、テクスチャーとして持ってくるにはsample.oggのように完結しているようなファイルではないとダメということでしょうか?
    質問ばかりで申し訳ございません。
    解決策やわかることがあれば教えて頂けると有り難いです。
    宜しくお願いいたします。

    • from2001 より:

      チャンさん、こんにちは。
      恥ずかしながら、oggファイルをライブストリーミングに利用できる方法があることを今知りました。
      上記の方法ではうまくいかないのですね。ちなみにどういった方法でoggファイルを生成していますでしょうか?(利用ソフトウェアなど)

      目的としてはリアルタイムライブ配信をテクスチャとして貼りたいということであれば
      AVProアセットがHLSに対応しているので、HLS形式のライブストリーミングを用いればうまくいくかもしれません(試してないですが)。AVProは試用できるので、試してみて結果教えていただけると嬉しいです。

  2. チャソ より:

    from2001 さん

    お返事ありがとうございます。
    ogg形式でのライブストリーミングはVLC media playerを使用しています。
    (参考までに https://www.videolan.org/vlc/index.ja.html)
    ストリーミング方法や出力先URLを指定したあと、ビデオとオーディオの配信形式も指定することでogg形式での配信が可能になります。是非使用してリアルタイムでテクスチャーとしてunityに持ってこれるかどうか試して頂けると有り難いです。
    AVproを教えて頂きありがとうございます。早速試してみたいと思います。

    • from2001 より:

      (私の環境で何故かVLCがクラッシュして起動できないので未確認です)
      VLCでのライブ配信ですと、oggファイル以外にもRTSPやHLSなども対応しているかと思います。

      Unityに最近VLCプレーヤーのアセットが発売されましたのでこちらを使うのが相性が良いかもしれません。RTSPやHLSのライブストリーミングの再生にも対応しているようです。

from2001 にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。