日々適当

hibitekitou

Unityで再生できる Ogg Theora を作る。

cg |2015-10-17

所で、Theoraってなんて読むの? しおら?

特許上の懸念無くフリーで使えるフォーマットということでFirefoxやChromeで再生可能な動画フォーマットですけど、ちっとも広がらない印象があります。

しかしてUnityではMovieTextureとして読み込まれたmovやmp4なんかのファイルは、Ogg Theoraに変換して利用されるそうです。

ということで、テクスチャに動画を貼り付けるなら、そのフォーマットにしておくのが好ましいようなのだけど、これってどうやって作るの?って思うわけじゃないですか。

Mac使いとしては、QuickTime 7 Playerから変換できればうれしいわけで、Xiph.Orgっていうおあつらえむきのコンポーネントが配布されています。こちらは/Library/QuickTimeなんかにいれてやればQT Playerから使えるのですけど、吐き出されたoggファイルは、僕の検証環境だと、Unityを固まらせてしまいました(Choromeで再生可能なムービーでしたがね)。

次にvlcを試してみますと、これで変換したのはうまく動いてくれましたですよ。けれども画質が悪い。

ということで、Adobe MediaEncoderで拡張子.webmや.oggに変換する [Qiita] という記事を参考にfnordware/AdobeOgg [GitHub]からAdobeアプリ向けのプラグインを入れてみました。んで、MediaEncoderで書き出してみたところ、とりあえずは再生されましたですよ。

ちなみに検証は

#pragma strict

//↓oggファイルの場所
var url = "file:///Users/username/Desktop/testOgg.ogg";

function Start () {
	var www : WWW = new WWW(url);
	var aClip : AudioClip;
	var aSource : AudioSource;
	
	var movTex : MovieTexture = www.movie;
	
	while ( !movTex.isReadyToPlay)
		yield;
	
	GetComponent.<Renderer>().material.mainTexture = movTex;
	aSource = GetComponent.< AudioSource>();
	aSource.clip = movTex.audioClip;
	
	movTex.loop = true;
	aSource.loop = true;
	
	movTex.Play();
	aSource.Play();
	
}

これをQuadに適用して、さらにAudioSourceコンポーネントを追加の上、実行しております。

コメント ( 0 )|Trackback ( )
  ・