【Unity】VideoPlayerを使ってみた
最近、Unityでの動画再生について調べる必要があったので自身の備忘録としてまとめました。
VideoPlayer
Unityの動画再生はUnity5.6から追加された VideoPlayer コンポーネントを使う必要があります。Unity5.6より前は MovieTexture を使っていましたが Unity2018.3 から廃止されてしまったので VideoPlayer 一択となりました。
設定方法
VideoPlayerで動画の再生を確認するだけであれば割と簡単です。
動画ファイルをProjectビューに配置します。
Main Camera が設定されている GameObject に VideoPlayerコンポーネントを追加
VideoPlayerコンポーネンとの Video Clip に動画ファイルを設定
Unityエディタを再生
事前読込
VideoPlayer.Prepare() を使えばバッファへ動画データを事前に読込んでおくことができます。VideoPlayer.prepareComplete にコールバックを設定すれば読込完了を検出することができます。
void Start() { // VideoPlayerコンポーネント取得. videoPlayer = obj.GetComponent<VideoPlayer>(); // 即再生されるのを防ぐ. videoPlayer.playOnAwake = false; // パス or VideoClip を設定. videoPlayer.url = "Assets/Resources/testfile.mp4"; // videoPlayer.clip = videoClip; // 読込完了時のコールバックを設定. videoPlayer.prepareCompleted = OnCompletePrepare; // 読込開始. videoPlayer.Prepare(); } // 読込完了時のコールバック. void OnCompletePrepare() { // 読込が完了したら再生. videoPlayer.Play(); }
その他
あと動画に関する知識があまりに無かったので、その辺もメモしておきます ^_^;
コーデック
データ(映像、音声)の圧縮・変換と復元の方法です。COmpression/DEcompressionを縮めたもので映像と音声でコーデックがそれぞれ異なります。圧縮・変換を「エンコード」復元を「デコード」と言います。
映像コーデック
コーデック | 概要 |
---|---|
MPEG-4 | 第三世代携帯電話や携帯ゲーム機などモバイルで主流になりつつある |
H.264 | 低ビットレートで高画質を維持することができるため、動画配信サービスやiPhone,Androidなどのスマホに採用されている、現時点で最も主流な映像コーデック |
H.265 | H.264の後継、H.264よりも圧縮効率に優れているがエンコード時の負荷が高い、また、Unity2018.3時点ではVideoPlayerで再生サポートされていない(Unity2019.1aから公式サポートとのこと) |
WMV9 | マイクロソフトが開発、Windowsでの普及率は高い |
Divx | Divx, Inc がMPEG-4をベースに独自開発、DVDプレイヤー、カーナビなどのデジタル家電でよく利用される |
Xvid | フリーの映像コーデック、エンコードはDivxより速いと言われている、商業使用時はそのソフトのソースコードを公開する義務が発生するので殆ど使用されていない |
音声コーデック
コーデック | 概要 |
---|---|
MP3 | 最も使用されている音声コーデック |
AAC | MP3の後継、同程度のビットレートであればMP3より高い音声品質が実現、 |
AC3 | 5.1chの出力に対応、圧縮率が高い場合は他音声コーデックより音声品質が良い、DVD・Blu-ray等に使用される |
コンテナ(動画形式)
映像コーデック + 音声コーデックのセット、正式名称は「コンテナフォーマット」と言うそうです。コンテナごとに扱える映像コーデックと音声コーデックが決まっているので目的に応じたコンテナを選択する必要があります。以下に代表的なものをまとめてみました。
コンテナ | 映像コーデック | 音声コーデック | 拡張子 |
---|---|---|---|
MP4 | MPEG-4, H.264, H.265 | AAC, AC3, MP3 | .mp4, .m4a |
MOV | MPEG-4, H.264, MJEG | AAC, MP3, LPCM | .mov, .qt |
WMV | WMV9 | WMA,AAC,MP3 | .wmv |
AVI | MPEG-4, Divx, Xvid, H.264, H.265 | AAC, MP3 | .avi |
MP4 が割と一般的なのかなと思いました。iPhone,Android, 携帯ゲーム機などで広く使われていますし ^_^
また、iPhone, Androidの端末やOSバージョンで対応しているコーデックは以下ページで確認できます。
・iPhone
「Video Playback」「Audio Playback」参照
iPhone - Compare Models - Apple
・Android
Supported media formats | Android Developers