Java源码示例:com.google.android.exoplayer2.trackselection.AdaptiveVideoTrackSelection
示例1
@Override
public boolean doPrepar(Context context, String url, Map<String, String> headers, Object... objects) {
release();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveVideoTrackSelection.Factory(BANDWIDTH_METER);
DefaultTrackSelector trackSelector = new DefaultTrackSelector(mainThreadHandler, videoTrackSelectionFactory);
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(context, trackSelector, new DefaultLoadControl(),
null, false);
simpleExoPlayer.setPlayWhenReady(true);
MediaSource mediaSource = buildMediaSource(context, Uri.parse(url));
simpleExoPlayer.addListener(ExoMedia.this);
simpleExoPlayer.setVideoListener(ExoMedia.this);
simpleExoPlayer.prepare(mediaSource, true, true);
return true;
}
示例2
private TrackSelector createTrackSelector(){
// Create a default TrackSelector
// Measures bandwidth during playback. Can be null if not required.
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveVideoTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
return trackSelector;
}
示例3
@SuppressWarnings("unused")
protected MappingTrackSelector buildTrackSelector(HostActivity host,
BandwidthMeter bandwidthMeter) {
return new DefaultTrackSelector(new AdaptiveVideoTrackSelection.Factory(bandwidthMeter));
}
示例4
private void preparePlayer() {
if (player == null){
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
@SimpleExoPlayer.ExtensionRendererMode int extensionRendererMode =
((EvercamPlayApplication) getApplication()).useExtensionRenderers()
? (false ? SimpleExoPlayer.EXTENSION_RENDERER_MODE_PREFER
: SimpleExoPlayer.EXTENSION_RENDERER_MODE_ON)
: SimpleExoPlayer.EXTENSION_RENDERER_MODE_OFF;
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveVideoTrackSelection.Factory(BANDWIDTH_METER);
trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, new DefaultLoadControl(),
drmSessionManager, extensionRendererMode);
player.addListener(this);
eventLogger = new EventLogger(trackSelector);
eventLogger.addListener(this);
player.addListener(eventLogger);
// player.setAudioDebugListener(eventLogger);
player.setVideoDebugListener(eventLogger);
player.setMetadataOutput(eventLogger);
Uri hlsUrl = Uri.parse(evercamCamera.getHlsUrl());
MediaSource mediaSource = new HlsMediaSource(hlsUrl, mediaDataSourceFactory, mainHandler, eventLogger);
boolean haveResumePosition = resumeWindow != C.INDEX_UNSET;
if (haveResumePosition) {
player.seekTo(resumeWindow, resumePosition);
}
player.prepare(mediaSource, !haveResumePosition, false);
player.setPlayWhenReady(true);
player.setVideoSurface(surface);
}else{
releasePlayer();
preparePlayer();
}
/*DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
@SimpleExoPlayer.ExtensionRendererMode int extensionRendererMode =
((EvercamPlayApplication) getApplication()).useExtensionRenderers()
? (false ? SimpleExoPlayer.EXTENSION_RENDERER_MODE_PREFER
: SimpleExoPlayer.EXTENSION_RENDERER_MODE_ON)
: SimpleExoPlayer.EXTENSION_RENDERER_MODE_OFF;
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveVideoTrackSelection.Factory(BANDWIDTH_METER);
trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, new DefaultLoadControl(),
drmSessionManager, extensionRendererMode);
player.addListener(this);
eventLogger = new EventLogger(trackSelector);
eventLogger.addListener(this);
player.addListener(eventLogger);
// player.setAudioDebugListener(eventLogger);
player.setVideoDebugListener(eventLogger);
player.setMetadataOutput(eventLogger);
Uri hlsUrl = Uri.parse(evercamCamera.getHlsUrl());
MediaSource mediaSource = new HlsMediaSource(hlsUrl, mediaDataSourceFactory, mainHandler, eventLogger);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
player.setVideoSurface(surface);*/
}