ExoPlayerにフィルターをかける


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も大歓迎です!