ExoPlayerばっか記事にしてるし技術力無いのに暇かよって言われそうですがこのまえちょっとわからなかった事あったのでメモ
使うタイミングほとんど無いと思うのですが、この前メディアをrawファイルから再生しようとしてどうやるのか困った事がありました。まあそもそもビデオをrawファイルに入れる意味がわからないんですがとりあえずそんな特殊事例があった場合のやりかた。
実は作者さんはそんな特殊事例のためのコードを最近作ったそうです。
RawResourceDataSource.Factory rawResourceDataSourceFactory = new RawResourceDataSource.Factory() {
@Override
public DataSource createDataSource() {
return new RawResourceDataSource(context);
}
};
// This is the MediaSource representing the media to be played.
MediaSource videoSource = new ExtractorMediaSource(RawResourceDataSource.buildRawResourceUri(R.raw.[ファイル名]),
rawResourceDataSourceFactory, extractorsFactory, null, null);
RawResourceDataSource.Factory
っていうインターフェイスを作ってあげます。多分この通りcreateDataSource()
でRawResourceDataSource
を返すだけでいいと思います。(適当に作ってみたら動いたので正解かはわかりません。)
そしたらふつうのMediaSource
の第2引数に入れてあげます。以上。
さらにRawResourceDataSource.buildRawResourceUri()
って言うメソッドでリソースIDを簡単にURIに変換できるようにしてくれてます。