9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ExoPlayerにフィルターをかける

Last updated at Posted at 2017-07-23

ExoPlayerFilter

ExoPlayerFilter

ExoPlayerにフィルターをかける。それができるライブラリを作成しました。
動画編集系の案件に携わった方は一度作ろうか検討したことがあるかと思います。

自分はExoPlayerに倍速再生が入ったので作成しようと考えました。

mediaCodecで使用しているtextureにOpenGLでフィルターをかけています。

Dependencies

dependencies {
    compile 'com.daasuu:ExoPlayerFilter:0.1.3'
}

※このライブラリはEXOPlayer core r2.4.3 を含んでいます。

Sample Usage

STEP 1

SimpleExoPlayer のインスタンスを作成します。今回はmp4ファイルを再生します。
HLS等の他のフォーマットを再生したい場合は公式サイトを参照ください。

    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);

    // Measures bandwidth during playback. Can be null if not required.
    DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
    // Produces DataSource instances through which media data is loaded.
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, Util.getUserAgent(context, "yourApplicationName"), defaultBandwidthMeter);
    // Produces Extractor instances for parsing the media data.
    ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
    // This is the MediaSource representing the media to be played.
    MediaSource videoSource = new ExtractorMediaSource(Uri.parse(MP4_URL), dataSourceFactory, extractorsFactory, null, null);

    // SimpleExoPlayer
    player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);
    // Prepare the player with the source.
    player.prepare(videoSource);
    player.setPlayWhenReady(true);

STEP 2

EPlayerView を作成し、SimpleExoPlayerをセットします。

    ePlayerView = new EPlayerView(this);
    // set SimpleExoPlayer
    ePlayerView.setSimpleExoPlayer(player);
    ePlayerView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    // add ePlayerView to WrapperView
    ((MovieWrapperView) findViewById(R.id.layout_movie_wrapper)).addView(ePlayerView);
    ePlayerView.onResume();

STEP 3

フィルターをセットします。フィルター一覧はこちらです。
フィルターをカスタムする場合は、GlFilterを継承すれば作成可能です。

    ePlayerView.setGlFilter(new GlSepiaFilter());

是非、ExoPlayerFilterをご覧になり、Starもつけていただけるととても嬉しく思います。 こんなフィルターも作れる等のpull reqestも大歓迎です!
9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?