Google Exoplayer 之全面认识( 二 )


Addas a
确保支持仓库
repositories {jcenter()}
添加依赖 -版本
compile 'com.google.android.exoplayer:exoplayer:r2.X.X'
the
您可以通过工厂方法创建一个实例 。工厂提供了一系列的方法创建不同程度定制的实例 。对于绝大多数使用情况下,默认库提供的实现足够用 。这时应该使用 . 方法 。方法返回 ,扩展了并添加额外的 high-level 播放功能 。下面演示了如何创建一个。
// 1. Create a default TrackSelectorHandler mainHandler = new Handler();BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();TrackSelection.Factory videoTrackSelectionFactory =new AdaptiveVideoTrackSelection.Factory(bandwidthMeter);TrackSelector trackSelector =new DefaultTrackSelector(mainHandler, videoTrackSelectionFactory);// 2. Create a default LoadControlLoadControl loadControl = new DefaultLoadControl();// 3. Create the playerSimpleExoPlayer player =ExoPlayerFactory.newSimpleInstance(context, trackSelector, loadControl);
theto a view
库提供了,它封装了一个和用来渲染视频 。一个可以包含在布局 XML 文件中 。下面演示了如何绑定

.();
如果您需要比播放器控制和渲染视频的上更细粒度的控制,可以给播放器设置目标 ,,或直接分别使用的 ,,r 和方法 。您可以使用 作为一个独立的部件,或实现自己的直接与进行交互 。和可用于时接收字幕和 ID3 元数据输出 。
the
在每一个 media 都由代表 。要播放 media 必须先创建一个相应的 ,然后把这个对象传递给 . 。库提供的DASH实现(实),实现( ),HLS 实现()和常规 media files 实现() 。这些实现在后面详细介绍 。下面的代码演示如何使用一个适合播放 MP4 文件的。
// Measures bandwidth during playback. Can be null if not required.DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();// Produces DataSource instances through which media data is loaded.DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,Util.getUserAgent(this, "yourApplicationName"), bandwidthMeter);// 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(mp4VideoUri,dataSourceFactory, extractorsFactory, null, null);// Prepare the player with the source.player.prepare(videoSource);
一旦已经被 ,可以通过调用播放器上的方法进行控制 。例如可用于启动和暂停播放,和各种方法可以用于改变进度 。如果被绑定到或,那么用户与这些部件的交互将会导致相应的方法被调用 。
the
不再使用的时候将释放掉是非常重要的,以便腾出有限的资源,如为其他应用程序使用视频解码器 。这可以通过调用 . 来完成 。
在每一个 media 都由代表 。要播放 media 必须先创建一个相应的 ,然后把这个对象传递给 . 。库提供的DASH实现(实),实现( ),HLS 实现()和常规 media files 实现() 。Demo app de ,分别演示了如何实例化以上四种。