Search in sources :

Example 11 with DefaultLoadControl

use of com.google.android.exoplayer2.DefaultLoadControl in project PreviewSeekBar by rubensousa.

the class ExoPlayerManager method createFullPlayer.

private SimpleExoPlayer createFullPlayer() {
    TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
    TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
    LoadControl loadControl = new DefaultLoadControl();
    SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(playerView.getContext()), trackSelector, loadControl);
    player.setPlayWhenReady(true);
    player.prepare(mediaSourceBuilder.getMediaSource(false));
    player.addListener(eventListener);
    return player;
}
Also used : SimpleExoPlayer(com.google.android.exoplayer2.SimpleExoPlayer) DefaultBandwidthMeter(com.google.android.exoplayer2.upstream.DefaultBandwidthMeter) LoadControl(com.google.android.exoplayer2.LoadControl) DefaultLoadControl(com.google.android.exoplayer2.DefaultLoadControl) TrackSelector(com.google.android.exoplayer2.trackselection.TrackSelector) DefaultTrackSelector(com.google.android.exoplayer2.trackselection.DefaultTrackSelector) ExoPlayerFactory(com.google.android.exoplayer2.ExoPlayerFactory) DefaultRenderersFactory(com.google.android.exoplayer2.DefaultRenderersFactory) DefaultTrackSelector(com.google.android.exoplayer2.trackselection.DefaultTrackSelector) DefaultRenderersFactory(com.google.android.exoplayer2.DefaultRenderersFactory) TrackSelection(com.google.android.exoplayer2.trackselection.TrackSelection) AdaptiveTrackSelection(com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection) DefaultLoadControl(com.google.android.exoplayer2.DefaultLoadControl)

Example 12 with DefaultLoadControl

use of com.google.android.exoplayer2.DefaultLoadControl in project android-UniversalMusicPlayer by googlesamples.

the class LocalPlayback method play.

@Override
public void play(QueueItem item) {
    mPlayOnFocusGain = true;
    tryToGetAudioFocus();
    registerAudioNoisyReceiver();
    String mediaId = item.getDescription().getMediaId();
    boolean mediaHasChanged = !TextUtils.equals(mediaId, mCurrentMediaId);
    if (mediaHasChanged) {
        mCurrentMediaId = mediaId;
    }
    if (mediaHasChanged || mExoPlayer == null) {
        // release everything except the player
        releaseResources(false);
        MediaMetadataCompat track = mMusicProvider.getMusic(MediaIDHelper.extractMusicIDFromMediaID(item.getDescription().getMediaId()));
        String source = track.getString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE);
        if (source != null) {
            // Escape spaces for URLs
            source = source.replaceAll(" ", "%20");
        }
        if (mExoPlayer == null) {
            mExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultTrackSelector(), new DefaultLoadControl());
            mExoPlayer.addListener(mEventListener);
        }
        // Android "O" makes much greater use of AudioAttributes, especially
        // with regards to AudioFocus. All of UAMP's tracks are music, but
        // if your content includes spoken word such as audiobooks or podcasts
        // then the content type should be set to CONTENT_TYPE_SPEECH for those
        // tracks.
        final AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(CONTENT_TYPE_MUSIC).setUsage(USAGE_MEDIA).build();
        mExoPlayer.setAudioAttributes(audioAttributes);
        // Produces DataSource instances through which media data is loaded.
        DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, "uamp"), null);
        // Produces Extractor instances for parsing the media data.
        ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
        // The MediaSource represents the media to be played.
        MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(source), dataSourceFactory, extractorsFactory, null, null);
        // Prepares media to play (happens on background thread) and triggers
        // {@code onPlayerStateChanged} callback when the stream is ready to play.
        mExoPlayer.prepare(mediaSource);
        // If we are streaming from the internet, we want to hold a
        // Wifi lock, which prevents the Wifi radio from going to
        // sleep while the song is playing.
        mWifiLock.acquire();
    }
    configurePlayerState();
}
Also used : DefaultExtractorsFactory(com.google.android.exoplayer2.extractor.DefaultExtractorsFactory) MediaMetadataCompat(android.support.v4.media.MediaMetadataCompat) AudioAttributes(com.google.android.exoplayer2.audio.AudioAttributes) ExtractorMediaSource(com.google.android.exoplayer2.source.ExtractorMediaSource) DefaultLoadControl(com.google.android.exoplayer2.DefaultLoadControl) DataSource(com.google.android.exoplayer2.upstream.DataSource) ExtractorMediaSource(com.google.android.exoplayer2.source.ExtractorMediaSource) MediaSource(com.google.android.exoplayer2.source.MediaSource) ExtractorsFactory(com.google.android.exoplayer2.extractor.ExtractorsFactory) DefaultExtractorsFactory(com.google.android.exoplayer2.extractor.DefaultExtractorsFactory) DefaultDataSourceFactory(com.google.android.exoplayer2.upstream.DefaultDataSourceFactory) DefaultTrackSelector(com.google.android.exoplayer2.trackselection.DefaultTrackSelector)

Example 13 with DefaultLoadControl

use of com.google.android.exoplayer2.DefaultLoadControl in project twicalico by moko256.

the class ImagePagerChildFragment method onCreateView.

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    FlingLayout view = (FlingLayout) inflater.inflate(R.layout.fragment_image_pager_child, null);
    view.setDismissListener(() -> {
        getActivity().finish();
        return Unit.INSTANCE;
    });
    view.setPositionChangeListener((Integer top, Integer left, Float dragRangeRate) -> {
        view.setBackgroundColor(Color.argb(Math.round(255 * (1.0F - dragRangeRate)), 0, 0, 0));
        return Unit.INSTANCE;
    });
    MediaEntity mediaEntity;
    if (getArguments() == null)
        return view;
    mediaEntity = (MediaEntity) getArguments().getSerializable(FRAG_MEDIA_ENTITY);
    if (mediaEntity == null)
        return view;
    switch(mediaEntity.getType()) {
        case "video":
            String videoPath = null;
            boolean isHls = false;
            for (MediaEntity.Variant variant : mediaEntity.getVideoVariants()) {
                if (variant.getContentType().equals("application/x-mpegURL")) {
                    videoPath = variant.getUrl();
                    isHls = true;
                }
            }
            if (videoPath == null) {
                videoPath = mediaEntity.getVideoVariants()[0].getUrl();
            }
            videoPlayView = view.findViewById(R.id.fragment_image_pager_video);
            videoPlayView.setVisibility(View.VISIBLE);
            videoPlayView.setControllerVisibilityListener(visibility -> {
                if (visibility != View.VISIBLE) {
                    hideSystemUI();
                } else {
                    showSystemUI();
                }
            });
            getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
                if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                    ((AppCompatActivity) getActivity()).getSupportActionBar().show();
                    videoPlayView.showController();
                }
            });
            player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(getContext()), new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter(), Integer.MAX_VALUE, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS, AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS, AdaptiveTrackSelection.DEFAULT_BANDWIDTH_FRACTION)), new DefaultLoadControl());
            if (savedInstanceState != null) {
                player.seekTo(savedInstanceState.getLong("video_time", 0));
            }
            videoPlayView.setPlayer(player);
            player.prepare((isHls) ? new HlsMediaSource.Factory(new OkHttpDataSourceFactory(GlobalApplication.getOkHttpClient(), getResources().getText(R.string.app_name).toString(), null)).createMediaSource(Uri.parse(videoPath)) : new ExtractorMediaSource.Factory(new OkHttpDataSourceFactory(GlobalApplication.getOkHttpClient(), getResources().getText(R.string.app_name).toString(), null)).createMediaSource(Uri.parse(mediaEntity.getVideoVariants()[0].getUrl()), new Handler(), null));
            break;
        case "animated_gif":
            videoPlayView = view.findViewById(R.id.fragment_image_pager_video);
            videoPlayView.setVisibility(View.VISIBLE);
            videoPlayView.setControllerVisibilityListener(visibility -> {
                if (visibility != View.VISIBLE) {
                    hideSystemUI();
                } else {
                    showSystemUI();
                }
            });
            getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
                if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                    ((AppCompatActivity) getActivity()).getSupportActionBar().show();
                    videoPlayView.showController();
                }
            });
            player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(getContext()), new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter(), Integer.MAX_VALUE, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS, AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS, AdaptiveTrackSelection.DEFAULT_BANDWIDTH_FRACTION)), new DefaultLoadControl());
            if (savedInstanceState != null) {
                player.seekTo(savedInstanceState.getLong("video_time", 0));
            }
            videoPlayView.setPlayer(player);
            player.prepare(new LoopingMediaSource(new ExtractorMediaSource.Factory(new OkHttpDataSourceFactory(GlobalApplication.getOkHttpClient(), getResources().getText(R.string.app_name).toString(), null)).createMediaSource(Uri.parse(mediaEntity.getVideoVariants()[0].getUrl()), new Handler(), null)));
            player.setPlayWhenReady(true);
            break;
        case "photo":
        default:
            getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
                if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                    ((AppCompatActivity) getActivity()).getSupportActionBar().show();
                }
            });
            imageView = view.findViewById(R.id.fragment_image_pager_image);
            imageView.setVisibility(View.VISIBLE);
            imageView.setOnClickListener(v -> {
                if ((getActivity().getWindow().getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                    hideSystemUI();
                } else {
                    showSystemUI();
                }
            });
            imageView.setOnScaleChangeListener((float scaleFactor, float focusX, float focusY) -> view.setDragEnabled(scaleFactor <= 1F));
            GlideApp.with(this).load(TwitterStringUtils.convertLargeImageUrl(mediaEntity.getMediaURLHttps())).fitCenter().thumbnail(GlideApp.with(this).load(TwitterStringUtils.convertSmallImageUrl(mediaEntity.getMediaURLHttps())).fitCenter()).into(imageView);
            break;
    }
    return view;
}
Also used : DefaultBandwidthMeter(com.google.android.exoplayer2.upstream.DefaultBandwidthMeter) Handler(android.os.Handler) ExtractorMediaSource(com.google.android.exoplayer2.source.ExtractorMediaSource) DefaultLoadControl(com.google.android.exoplayer2.DefaultLoadControl) HlsMediaSource(com.google.android.exoplayer2.source.hls.HlsMediaSource) AdaptiveTrackSelection(com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection) DefaultTrackSelector(com.google.android.exoplayer2.trackselection.DefaultTrackSelector) OkHttpDataSourceFactory(com.google.android.exoplayer2.ext.okhttp.OkHttpDataSourceFactory) DefaultRenderersFactory(com.google.android.exoplayer2.DefaultRenderersFactory) MediaEntity(twitter4j.MediaEntity) FlingLayout(com.github.chuross.flinglayout.FlingLayout) LoopingMediaSource(com.google.android.exoplayer2.source.LoopingMediaSource) Nullable(android.support.annotation.Nullable)

Example 14 with DefaultLoadControl

use of com.google.android.exoplayer2.DefaultLoadControl in project NiceMusic by lizixian18.

the class ExoPlayback method play.

@Override
public void play(SongInfo info) {
    mPlayOnFocusGain = true;
    mFocusAndLockManager.tryToGetAudioFocus();
    registerAudioNoisyReceiver();
    String mediaId = info.getSongId();
    boolean mediaHasChanged = !TextUtils.equals(mediaId, mCurrentMediaId);
    if (mediaHasChanged) {
        mCurrentMediaId = mediaId;
        mCurrentMediaSongInfo = info;
    }
    if (mediaHasChanged || mExoPlayer == null) {
        // release everything except the player
        releaseResources(false);
        String source = info.getSongUrl();
        if (source != null) {
            // Escape spaces for URLs
            source = source.replaceAll(" ", "%20");
        }
        if (mExoPlayer == null) {
            mExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultTrackSelector(), new DefaultLoadControl());
            mExoPlayer.addListener(mEventListener);
        }
        final AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(CONTENT_TYPE_MUSIC).setUsage(USAGE_MEDIA).build();
        mExoPlayer.setAudioAttributes(audioAttributes);
        DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, "musiclibrary"), null);
        ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
        // MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(source), dataSourceFactory, extractorsFactory, null, null);
        MediaSource mediaSource = buildMediaSource(Uri.parse(source), null, null, null);
        mExoPlayer.prepare(mediaSource);
        mFocusAndLockManager.acquireWifiLock();
    }
    configurePlayerState();
}
Also used : DefaultExtractorsFactory(com.google.android.exoplayer2.extractor.DefaultExtractorsFactory) HlsMediaSource(com.google.android.exoplayer2.source.hls.HlsMediaSource) DashMediaSource(com.google.android.exoplayer2.source.dash.DashMediaSource) ExtractorMediaSource(com.google.android.exoplayer2.source.ExtractorMediaSource) MediaSource(com.google.android.exoplayer2.source.MediaSource) SsMediaSource(com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource) ExtractorsFactory(com.google.android.exoplayer2.extractor.ExtractorsFactory) DefaultExtractorsFactory(com.google.android.exoplayer2.extractor.DefaultExtractorsFactory) DefaultDataSourceFactory(com.google.android.exoplayer2.upstream.DefaultDataSourceFactory) DefaultTrackSelector(com.google.android.exoplayer2.trackselection.DefaultTrackSelector) AudioAttributes(com.google.android.exoplayer2.audio.AudioAttributes) DefaultLoadControl(com.google.android.exoplayer2.DefaultLoadControl) HttpDataSource(com.google.android.exoplayer2.upstream.HttpDataSource) DataSource(com.google.android.exoplayer2.upstream.DataSource)

Example 15 with DefaultLoadControl

use of com.google.android.exoplayer2.DefaultLoadControl in project Camera-Roll-Android-App by kollerlukas.

the class VideoPlayerActivity method initPlayer.

private void initPlayer() {
    // Produces DataSource instances through which media data is loaded.
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, getString(R.string.app_name)), null);
    // 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(videoUri, dataSourceFactory, extractorsFactory, null, null);
    DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this);
    // Create the player
    player = ExoPlayerFactory.newSimpleInstance(renderersFactory, new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(null)), new DefaultLoadControl());
    // Bind the player to the view.
    SimpleExoPlayerView simpleExoPlayerView = findViewById(R.id.simpleExoPlayerView);
    simpleExoPlayerView.setPlayer(player);
    // Prepare the player with the source.
    player.prepare(videoSource);
    player.setRepeatMode(Player.REPEAT_MODE_ONE);
    player.setPlayWhenReady(true);
    final ImageButton playPause = findViewById(R.id.play_pause);
    player.addListener(new SimpleEventListener() {

        @Override
        public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
            // update PlayPause-Button
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && showAnimations()) {
                if (player.getPlayWhenReady()) {
                    playPause.setImageResource(R.drawable.play_to_pause_avd);
                } else {
                    playPause.setImageResource(R.drawable.pause_to_play_avd);
                }
                Drawable d = playPause.getDrawable();
                if (d instanceof Animatable) {
                    ((Animatable) d).start();
                }
            } else {
                if (player.getPlayWhenReady()) {
                    playPause.setImageResource(R.drawable.ic_pause_white);
                } else {
                    playPause.setImageResource(R.drawable.ic_play_arrow_white);
                }
            }
        }
    });
}
Also used : DefaultExtractorsFactory(com.google.android.exoplayer2.extractor.DefaultExtractorsFactory) Drawable(android.graphics.drawable.Drawable) ExtractorMediaSource(com.google.android.exoplayer2.source.ExtractorMediaSource) DataSource(com.google.android.exoplayer2.upstream.DataSource) DefaultLoadControl(com.google.android.exoplayer2.DefaultLoadControl) ImageButton(android.widget.ImageButton) ExtractorMediaSource(com.google.android.exoplayer2.source.ExtractorMediaSource) MediaSource(com.google.android.exoplayer2.source.MediaSource) ExtractorsFactory(com.google.android.exoplayer2.extractor.ExtractorsFactory) DefaultExtractorsFactory(com.google.android.exoplayer2.extractor.DefaultExtractorsFactory) DefaultDataSourceFactory(com.google.android.exoplayer2.upstream.DefaultDataSourceFactory) AdaptiveTrackSelection(com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection) SimpleExoPlayerView(com.google.android.exoplayer2.ui.SimpleExoPlayerView) Animatable(android.graphics.drawable.Animatable) DefaultTrackSelector(com.google.android.exoplayer2.trackselection.DefaultTrackSelector) DefaultRenderersFactory(com.google.android.exoplayer2.DefaultRenderersFactory)

Aggregations

DefaultLoadControl (com.google.android.exoplayer2.DefaultLoadControl)15 DefaultTrackSelector (com.google.android.exoplayer2.trackselection.DefaultTrackSelector)15 MediaSource (com.google.android.exoplayer2.source.MediaSource)10 DefaultExtractorsFactory (com.google.android.exoplayer2.extractor.DefaultExtractorsFactory)7 ExtractorMediaSource (com.google.android.exoplayer2.source.ExtractorMediaSource)7 AdaptiveTrackSelection (com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection)7 DefaultRenderersFactory (com.google.android.exoplayer2.DefaultRenderersFactory)6 DefaultDataSourceFactory (com.google.android.exoplayer2.upstream.DefaultDataSourceFactory)6 AudioAttributes (com.google.android.exoplayer2.audio.AudioAttributes)4 ExtractorsFactory (com.google.android.exoplayer2.extractor.ExtractorsFactory)4 ClippingMediaSource (com.google.android.exoplayer2.source.ClippingMediaSource)4 CompositeMediaSource (com.google.android.exoplayer2.source.CompositeMediaSource)4 ConcatenatingMediaSource (com.google.android.exoplayer2.source.ConcatenatingMediaSource)4 MaskingMediaSource (com.google.android.exoplayer2.source.MaskingMediaSource)4 TrackGroupArray (com.google.android.exoplayer2.source.TrackGroupArray)4 ServerSideAdInsertionMediaSource (com.google.android.exoplayer2.source.ads.ServerSideAdInsertionMediaSource)4 FakeAdaptiveMediaSource (com.google.android.exoplayer2.testutil.FakeAdaptiveMediaSource)4 FakeMediaSource (com.google.android.exoplayer2.testutil.FakeMediaSource)4 FakeTimeline (com.google.android.exoplayer2.testutil.FakeTimeline)4 Test (org.junit.Test)4