Universal Media Player
マニュアルがむっずい
目次
INTRODUCTION
INSTALLATION GUIDELINE
USAGE GIDELINE
FAQ
CLASSES / METHOD DESCRIPTION
INTRODUCTION
Universal Media Player (UMP)は、LibVLCとFFmpegのネイティブライブラリをベースにしたUnity用のクロスプラットフォームなメディアフレームワークプラグインです。
table:oses
Platfroms CPUs Library Checked platforms / Graphic API
Windows x86/x86_64 LibVLC Win7+(D3D9, D3D11, OpenGL)
OSX x86_x64 LibVLC 10.10 Yosemite+ (OpenGL)
Linux x86/x86_64/Universal LibVLC Ubuntu 12.04.5 LTS+ (OpenGL)
Android armeabi-v7a/arm64-v8a/x86 Native/LibVLC/Exo API14+(OpenGLES2.0 or 3.0)
iOS armv7, arm64 FFmpeg/Native iOS7+(OpenGLES2.0 or Metal)
WebGL x86/x86_64 HTML5 Video Firefox, Chrome, Opera
現バージョンの機能:
高速で柔軟な動画再生(ネイティブテクスチャの高速更新。Direct3D9、Direct3D11およびOpenGL)
Unity Editorに完全対応(Windows、OSX、Linuxの各プラットフォームでエディタ内再生が可能)
Unity "Audio Source" コンポーネントに対応(Windows、OSX、Linuxプラットフォームでのみ動作)
外部libVLCライブラリの使用可能性をサポート(Windows、OSX、Linuxプラットフォームでのみ動作)
字幕(SPU)とオーディオトラックを簡単に切り替える可能性をサポート(Windows、OSXとLinuxプラットフォームでのみ動作)
透明なチャンネルを持つビデオをサポートします(Windows、OSXとLinuxプラットフォームでのみ動作)
再生ビデオフレームのピクセル(スナップショット)を取得する可能性をサポートしました
Youtubeビデオの再生に対応
主なビデオファイル形式の再生をサポート
3GPP、AVI、FLV、SWF、M4V、Matroska、Oggビデオ、QuickTimeファイルフォーマット、WebM、Windows Media Videoおよびストリーミングメディアプロトコル。HTTPS、HTTP、HLS、RTSP、RTMP
(ある付加的な流れかファイル形式があれば、私のサポート電子メールの私を書き、私はあなたのためのそれを、私の資産を買う前に点検する:)
対応する主なビデオプレーヤーイベントシステム
オープニング、バッファリング、準備中、再生中、一時停止、停止、終了、エラー
Unity Editorでネイティブライブラリからのフルロギングシステムをサポートし、異なる深さのデバッグの可能性を増やしました。警告、デバッグ、エラー(Windows、OSX、Linuxプラットフォームでのみ動作)
主なビデオプレーヤー機能:再生、一時停止、ミュート、再生速度、巻き戻し、スナップショット、その他をサポート
重要
本パッケージにはLGPLでライセンスされているlibvlcのコンパイル済みバイナリが含まれていることに注意してください。また、本パッケージには全てのlibVLCモジュールが含まれているわけではありませんが、一部のモジュールがGPLの下でライセンスされているため、それらを削除しています。 本パッケージで使用しているVLCネイティブライブラリのソースコードを公開しています。
INSTALLATION GUIDELINE
Asset StoreからUMPパッケージをインポートします。これで、Unityプロジェクト内に
「UniversalMediaPlayer "という名前のフォルダが、Unityプロジェクトに作成されているはずです。
要約
Editor:カスタムエディタ、環境設定、ビルドスクリプト。
Materials:カスタムマテリアル:カスタムシェーダーをベースにしたサンプルシーンで使用されているカスタムマテリアル。
Plugins:すべてのネイティブDLLとシェアードライブラリ。
Prefabs:UMPアセットでプロジェクトを簡単にセットアップするために使用される特別なUMPプレハブ。
Resources:UMPアセットにプリロードされた設定情報を格納する特別なファイル。
Scenes:UMPアセットに搭載されたすべてのコンポーネントの設定や、追加機能を紹介するデモシーンです。
Scripts:UMPの操作方法を示すC#クラス。
Shasers:動的なアスペクト処理と透明なチャンネルを持つビデオに使用できるシェーダーです。
Asset Parts
フルUMPアセンブリは、2つの独立した部分から構成されています。
UMP (Win、Mac、Linux、WebGL) - デスクトップ・プラットフォーム向けサポート
UMP (Android, iOS) - モバイルプラットフォーム対応用
モバイル用のUMPを購入した場合、スタンドアロンビルド(PC、Mac、Linux、WebGLプラットフォーム)では動作しませんが、Unity Editorで動画を再生することは可能です - 詳細はExternal VLC Player Supportのサブ項目にあります。デスクトップ用のUMPも同様で、Unity Editorとスタンドアロンビルド(PC、Mac、Linux、WebGLプラットフォーム)で動画を再生できる可能性がありますが、モバイル(Android、iOS)プラットフォームでは動きません。
2つの独立したパーツを1つの完全なUMPアセットに正しく結合するために必要なもの
(中略)
External VLC Player Support
UMPアセットでは、通常のVLCプレーヤーでインストールされる外部libVLCライブラリをサポートすることができます。また、UMPアセットにデフォルトで含まれる内部libVLCライブラリがなくてもUnity Editorで動画を再生できるようになり(例えば、gitリポジトリでこのライブラリを確保したくない場合)、フルUMPアセットのうちUMP(Android、iOS)部分だけを持っていれば簡単に動画を再生することができるようになります。
UMPアセットで通常のVLCプレーヤーを正しく使用するために必要なもの
使用するUnity Editorのビットバージョンに応じた正規のVLCプレーヤーをダウンロードする
Unity Preferencesの特別なUMPメニューで、すべての設定が正しく行われていることを確認します。(USAGE GUIDELINEを参照)
Updating Exist Version
既存のUMPをアップデートする場合、新しいバージョンのUMPアセットをインポートする前に、古い "UniversalMediaPlayer "フォルダを削除しておく必要があります。エディタセッションで一度Unityからプレイモードに入った場合は、Unityを終了して再起動する必要があります。そうしないと、ネイティブDLLがUnityからキャッシュされ、正しく更新されません。
USAGE GUIDELINE
Settings Window
これは、UMPアセットにいくつかの追加設定をするための特別な可能性です。このメニューは、以下の場所で見つけることができます。
Unity Editor Menu: Window->UMP Settings
要約
Use ‘Audio Source’:デフォルトですべてのUMPインスタンス(グローバル)のオーディオ出力にUnityの「Audio Source」コンポーネントを使用します(Windows、OSX、Linuxプラットフォームでのみ動作します)。
Use installed VLC:すべてのUMPインスタンスで、外部/インストールされたVLCプレーヤーライブラリを使用します(グローバル、Windows、OSX、Linuxプラットフォームでのみ動作します)。VLCをインストールするディレクトリのパスは自動的に取得されます(カスタムパスを設定することも可能です)。
Libraries path:インストール済み/カスタムLibVLCライブラリへのパス。デフォルトでは、インストールされたVLCプレーヤーのディレクトリへのパスが自動的に取得されますが、お使いのプラットフォームにVLCプレーヤーがない場合は、LibVLCライブラリへの独自のパスを設定することができます。
Mobile:現在のバージョンでは、プロジェクトで使用されるプレーヤーを選択することができますので、デバイスの容量を節約し、リリースビルドに未使用のライブラリを含める必要がありません。AndroidとiOSの両方のモバイル・プラットフォーム用のプレーヤーを選択することができます。AndroidとiOSの両方に対応しています。
Android Players
Native:すべてのUMPインスタンスのためのネイティブAndroidのMediaPlayer APIを使用する可能性を与え、古いデバイスとの互換性が向上し、 "StreamingAssets "フォルダからビデオファイルの再生のより良いサポートをしています。そのため、ビデオやストリームがこのプレーヤーで動作する場合は、デフォルトでこれを使用することをお勧めします。
LibVLC:VLCのデスクトップ版のように、ほとんどのローカルビデオとオーディオファイル、ネットワークストリーム(アダプティブストリーミングを含む)、DVD ISOを再生します。MKV、MP4、AVI、MOV、Ogg、FLAC、TS などの主要なフォーマットをすべてサポート。すべてのコーデックが含まれており、別途ダウンロードする必要はありません。より良いコーデックのサポートを持っていますが、低いデバイスのサポート。Android の MediaPlayer API (Native) で動作しないビデオやストリームは、デフォルトでこちらを使用してください。
Exo:Android用のアプリケーションレベルのメディアプレイヤーです。Android の MediaPlayer API に代わるものとして、ローカルおよびインターネット経由でのオーディオおよびビデオ再生に対応しています。ExoPlayer は、DASH や SmoothStreaming のアダプティブ・プレイバックなど、Android の MediaPlayer API では現在サポートされていない機能をサポートしています。
iOS Players
Native:AVPlayer を使用して、ローカルおよびリモートのファイルベースのメディア、例えば QuickTime ムービーや MP3 オーディオ ファイル、また HTTP ライブ ストリーミングを使用して提供されるオーディオビジュアル メディアを再生します。古いデバイスとのより良い互換性を持っており、ビルド版でより少ないスペースを取ります。
FFmpeg:より良いコーデックのサポートがあります。もし、AVPlayerで動画が再生できない場合は、こちらをご利用ください。
Exported Video Paths:StreamingAssets デバイス上の特別なキャッシュされた宛先にコピーされるビデオ(またはビデオ部分)(プレイリストを使用する可能性のため:多くの部分を含むビデオ)です。
Prefab Usage Tutorial
Prefabs フォルダにあるUMPプレハブ(UnivarsalMediaPlayer)で、メディアプレーヤーの機能を管理し、Unityのシーンに移動させることができます。
UMPインスタンスを "Hierarchy "ウィンドウで選択すると、コンポーネントインスペクタで管理できます。
要約
Rendering GameObjects:Unityの "GameObject "で、"Mesh Renderer "とマテリアルや "Raw Image "コンポーネントを持つものを集めたシンプルな配列。
Path to video file:ビデオへのURLリンクまたはローカルパス。どちらも正しく動作しますので、ビデオファイルの場所について心配する必要はありません。ローカル ファイルについては、サポートされているすべてのプラットフォームで file:/// シームによる絶対パスを指定することができます。リモート ファイルまたはストリームの場合は、URL リンクを使用するだけです。
使用例
StreamingAssets フォルダからビデオを再生する (StreamingAssetsmyVideoFile.mp4)- file:///myVideoFile.mp4
ローカルストレージから動画を再生する(C:\MyFolder\Videos\video1.mp4) - file:///C:\MyFolder\Videos\video1.mp4 or C:\MyFolder\Videos\video1.mp4 or file:///DCIM/100ANDRO/MyVideo.mp4 (Androidの例なので、ルートフォルダは無視して構いません。私の場合は"/storage/emulated/0/"です) また、Androidプラットフォームで動画を再生する場合は、プレーヤーの設定で「書き込みアクセス」を「外部(SDCard)」に設定することを忘れないでください。
リモートスペースからの動画再生(ストリーム再生) -rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
AutoPlay:動画がバッファリングされた後、自動的に再生が開始されます。
Looping:再生が終点に到達すると、始点にジャンプして再び再生します。また、"Smooth Loop "を使用することも可能です。
この機能の違いは、以下の通りです。
Loop:バッファリング・ステージを持ちますが、デバイスのリソースをあまり使いません。
Loop(smooth):バッファリングステージを持たないが、より多くのデバイスリソースを使用する。
Mute:現在のビデオ再生のミュート状態を設定する
Advanced options:動画再生のための追加設定を行うことができる特別なプロパティです。だから、あなたはスムーズではない再生(いくつかのフリーズを含む)を持っているか、またはバッファリング時間を短縮したい場合は、ちょうどこの追加のプロパティを使用してみてください、それはあなたの問題を解決するために助けることができる、また、すべてのこのプロパティは、ビデオ再生にそれらが持っている何の効果を説明する特別なツールチップを持っています。
Volume:現在のソフトウェアオーディオの音量を設定します(デフォルトでは、この値を "0 "から "100 "に変更することができます)。
Play rate:要求されたムービー再生速度を設定します(デフォルトでは、この値を "0.5 "から "5 "まで変更できます。)
Position:ムービーの位置を設定します。これは再生が有効でない場合は効果がありません。入力フォーマットやプロトコルによっては動作しない場合があります。
Load:ビデオ再生の準備をします(現在のビデオの最初のフレームを取得できなくなるまで待ちます)。
Play:動画の再生を開始します。
Pause:再生中のビデオを一時停止することができます。再生を続けるには、もう一度「Play」ボタンを押します。
Stop:メディアを停止し、最初のフレームにシークします。再度再生を開始するには、"Play "ボタンを押す必要があります。
Shot:現在のビデオ再生のスナップショットを取得し、デフォルトで "Application.persistentDataPath "フォルダに保存します(Windows、OSXとLinuxプラットフォームでのみ動作します)。
Log Detail:ネイティブ・ライブラリからログ・メッセージを取得することができます(WindowsおよびOSXプラットフォームでのみ動作します)。
Last msg:最後の再生イベントまたは再生エラーを表示。
Event listeners:特別なコールバック(オープニング、バッファリング、イメージレディ、再生、一時停止、停止、エンドリーチ、エラー、時間変更、位置変更、スナップショットイベント)にアタッチする可能性を提供します。
Patches
追加機能を試したり、異なるバージョンのライブラリを使用したい場合は、特別なUMPパッチを使用することができます(UMPアセットを持つプロジェクトにインポートするだけです:「Unityパッケージのインポート」ウィンドウで「すべて」ボタンを押し、その後に「インポート」ボタンを押してください)。
Android
UMPは、デフォルトでAndroid用のいくつかのプレーヤーを使用することができます。Native、LibVLC(v.3.0.9)、Exo(v.2.8.2)ですが、新しいバージョンのライブラリでは、ビデオ再生に問題がある場合がありますので、別のバージョンのライブラリを使用すると、この問題を解決できる可能性があります。
iOS
iOSプラットフォームで特定のビデオフォーマット/ストリームをロードしたい場合、またはビデオファイル/ストリームがデフォルトのUMPフレームワークで正しく動作しない場合、可能なすべてのサポートコーデックを持つ新しいメディアフレームワークを含む特別パッチを使用して、" UniversalMediaPlayer Plugins FilteriOS" フォルダーにある古いものを交換することを試みることができます。このフレームワークはサイズが大きく、ほとんどの場合必要ないため、デフォルトでは含まれていませんが、以下のリンクから個別にダウンロードすることができます。FFmpeg(n3.4-k.0.8.8)-full-armv7-arm64 or FFmpeg(n3.4-k.0.8.8)-full-arm64 Desktop
デスクトップ用UMPアセットの最新版は、最新の安定版libVLCライブラリを使用しています。Windoswではv.3.0.4、MacOSではv.3.0.4、Linuxではv.2.2.1 (Ubuntu 16.04 Desktop (32/64-bit)) と v.3.0.3 (Ubuntu 18.04 Desktop (64-bit)) となっています。なお、LibVLCライブラリの旧バージョンも使用できますので、最近のリリースは以下のリンクからお試しください。
Linux Platform Setup
(中略)
IOS Platform Setup
Unity EngineからiOSプロジェクトを完全にエクスポートする際、「Build Phases」タブの「Link Binary With Libraries」フェーズで、必要なフレームワークがすべて利用可能かどうかを確認してください。
このフレームワークとライブラリ (VideoToolbox, libz, libbz2) がリストにない場合は、手動で追加するか、Unity のビルドを試してみてください。
FAQ
どのようなシェーダーを使えばいいのでしょうか?
テクスチャープロパティを使用するすべてのシェーダを使用することができます。
ストリームのバッファリング時間を変更することはできますか?
ビルドを確認するプラットフォームには、「追加のプロパティ」を使用するだけです。
Androidプラットフォームでは、次のオプションを使用することもできます("Universal MediaPlayer.cs "スクリプトにこの変更を追加します)。「UniversalMediaPlayer.cs "スクリプトに追加してください)。
code:cs
case UMPSettings.Platforms.Android:
var androidOptions = new PlayerOptionsAndroid(null)
{
FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero,
HardwareDecoding = _hardwareDecodingAndroid,
PlayInBackground = _playInBackgroundAndroid,
UseTCP = _rtspOverTcpAndroid,
FileCaching = _fileCachingAndroid,
LiveCaching = _liveCachingAndroid,
DiscCaching = _diskCachingAndroid,
NetworkCaching = _networkCachingAndroid,
ClockJitter = 0, //<- add this line
ClockSynchro = 0 //<- add this line
};
options = androidOptions;
break;
このオプションが有効でない場合は、別のlibVLCライブラリを使用してみてください(詳細は、「パッチ」の章を参照してください)。パッチの章を参照)。
Linuxアプリケーションが正常に動作しません。
ビルドを起動しようとしたときに、このメッセージが表示された場合。
Could not display “appname”.
There is no application installed for “executable” files. Do you want to search for an
application to open this file?
ファイルを右クリック→プロパティ→アクセス権→プログラムとしての実行を許可、またはターミナルから chmod +x appname で実行可能な状態にする必要があります。
Oculus Riftヘッドフォンの音声出力を設定する方法を教えてください。
メディアプレーヤーオブジェクトの新しいインスタンスを作成するときに、新しいオーディオ出力デバイスを設定するための追加の定義された引数を追加します(この変更は "UniversalMediaPlayer.cs "スクリプトに追加されます)。
code:cs
case UMPSettings.Platforms.Win:
case UMPSettings.Platforms.Mac:
case UMPSettings.Platforms.Linux:
var standaloneOptions = new PlayerOptionsStandalone(null)
{
FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth,
_fixedVideoHeight) : Vector2.zero,
AudioOutputs = _desktopAudioOutputs,
DirectAudioDevice = "Rift Audio", //<- add this line
HardwareDecoding = _desktopHardwareDecoding,
FlipVertically = _desktopFlipVertically,
VideoBufferSize = _desktopVideoBufferSize,
UseTCP = _desktopRtspOverTcp,
FileCaching = _desktopFileCaching,
LiveCaching = _desktopLiveCaching,
DiskCaching = _desktopDiskCaching,
NetworkCaching = _desktopNetworkCaching
};
エディターでは動画が再生されるのに、モバイル端末では再生されないのはなぜですか?
各プラットフォームは、ビデオコーデックやオーディオフォーマットの点で独自の制約があります。そのため、ほとんどの場合 ビデオエンコーディングの問題である可能性が高いです。
UMPでカスタムGameObjecs(例えばNGUIコンポーネント)を設定するにはどうすればよいですか?
特別なコールバックを使用して、現在のビデオ用に作成されるビデオテクスチャを取得し、それを使用していくつかの追加操作を行うことができます(その使用方法は、"UniversalMediaPlayer.cs" スクリプトで見つけることができます)。
code:cs
public void OnPlayerImageReady(Texture2D image)
{
//apply video output texture to NGUI component
}
Pluginsフォルダから.mpgなどのコーデック(または使用しないもの)を削除して、アプリケーションのサイズを小さくすることは可能ですか?
はい、そのうちのいくつかは削除できます。例えば、プロジェクトでサポートしたいビデオを実行し、すべての「plugins」フォルダを削除しようとすると、現在のビデオ再生に使用されているすべての.dllは削除できませんが、他の.dllは削除されます。
youtubeの動画の解像度を指定する方法はないのでしょうか?
この機能を使えば、自分の好きな解像度の動画を取得することができます。youtubeサービスからyoutubeのビデオリンクを取得した場合。
code:cs
var serviceVideo = VideoServices.FindVideo(videos, 240);//240, 360, 480, 720, 1080...
WebGLプラットフォームでビデオを再生できない(またはWebGLプラットフォームでストリームを再生する方法)?
WebGLのサポートはまだ実験的なもので、クロスドメインポリシー問題(詳細はこちらのリンクから: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing )という名前の問題があり、他のドメインからのストリームを再生しようとすると(HTML + WebGLテクスチャ側)、サーバーやドメインがあなたのリクエストに対して “Access-Control-Allow-Origin” を持たない場合、それは動作しません。あなたが試せることは、自分でPython(または他の言語)サーバーを書いて、ビデオのリクエストをプロキシするのに使うことですが、想像できるほど美しいソリューションではありません、でもそれは有効です。この問題は本当に厄介なので、他のドメインからのテクスチャソースを使用するための、よりクリーンな方法が開発されることを期待しています。この問題は、ローカルのビデオファイルや「StreamingAssets」フォルダのビデオファイルを再生する場合は発生しません。また、"Player Settings... "のWebGL graphics apiを確認し、以下のスクリーンショットと同じにしてください。 https://gyazo.com/ff858fb83990f83c93ce57ed85467c38
360度立体視レンダリング(SBSまたはtop-bottom)の設定方法は?
追加可能なプレーヤーオプションの入手方法と、そのリストを入手できる場所を教えてください。
libVLC ライブラリで使用できるすべての可能な追加オプションは、このリンクで見つけることができます。VLC_command-line_help (デスクトップおよび Android プラットフォームでサポート)。 使用例
code:cs
case UMPSettings.Platforms.Win:
case UMPSettings.Platforms.Mac:
case UMPSettings.Platforms.Linux:
var standaloneOptions = new PlayerOptionsStandalone(new string[] {
"--http-proxy-pwd=password" }) //<- string array with options
{
FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero,
AudioOutputSources = _audioSourcesDesktop,
HardwareDecoding = _hardwareDecodingDesktop,
FlipVertically = _flipVerticallyDesktop,
UseTCP = _rtspOverTcpDesktop,
FileCaching = _fileCachingDesktop,
LiveCaching = _liveCachingDesktop,
DiskCaching = _diskCachingDesktop,
NetworkCaching = _networkCachingDesktop
};
if (_outputToFileDesktop)
standaloneOptions.RedirectToFile(_displayOutputDesktop, _outputFilePathDesktop);
standaloneOptions.SetLogDetail(_logDetail, UnityConsoleLogging);
options = standaloneOptions;
break;
デスクトップ・プラットフォームでSRTファイルを読み込んで使用するには?
srtファイルをロードする必要があります。(srtファイルはビデオファイルと同じフォルダにあるはずです)この変更をUniversalMediaPlayer.csスクリプトに追加します(SRTがビデオファイルに組み込まれている場合、このステップはスキップできます)。
code:cs
case UMPSettings.Platforms.Win:
case UMPSettings.Platforms.Mac:
case UMPSettings.Platforms.Linux:
var standaloneOptions = new PlayerOptionsStandalone(new string[] { @"--subfile=C:\PathToFile\sub.srt" })
{
FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero,
AudioOutputSources = _audioSourcesDesktop,
HardwareDecoding = _hardwareDecodingDesktop,
FlipVertically = _flipVerticallyDesktop,
UseTCP = _rtspOverTcpDesktop,
FileCaching = _fileCachingDesktop,
LiveCaching = _liveCachingDesktop,
DiskCaching = _diskCachingDesktop,
NetworkCaching = _networkCachingDesktop
};
if (_outputToFileDesktop)
standaloneOptions.RedirectToFile(_displayOutputDesktop, _outputFilePathDesktop);
standaloneOptions.SetLogDetail(_logDetail, UnityConsoleLogging);
options = standaloneOptions;
break;
正しいsrtトラックを選択し、この変更を "UniversalMediaPlayer.cs "スクリプトに追加してください。
code:cs
public void OnPlayerPrepared(Texture2D videoTexture)
{
if (_mediaPlayer.SpuTracks.Length > 0)
{
}
else
{
Debug.Log("Don't have any subtitle tracks");
}
_lastEventMsg = "Prepared";
if (_preparedEvent != null)
_preparedEvent.Invoke(videoTexture);
}
CLASSES/METHODS DESCRIPTION
(略)