要将一个m3u8文件播放到Exo Player,可以按照以下步骤进行操作:
implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X'
请将 "2.X.X" 替换为你想要使用的ExoPlayer版本号。
private SimpleExoPlayer player;
private PlayerView playerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playerView = findViewById(R.id.player_view);
// 创建一个ExoPlayer实例
player = ExoPlayerFactory.newSimpleInstance(this);
// 将ExoPlayer绑定到PlayerView
playerView.setPlayer(player);
}
在上面的代码中,我们首先在布局文件中添加了一个PlayerView控件,并在onCreate方法中获取到该控件的引用。然后,我们创建了一个ExoPlayer实例,并将其绑定到PlayerView上。
private void playM3u8File() {
// 创建一个数据源工厂
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "ExoPlayerDemo"));
// 创建一个HLS数据源
HlsMediaSource hlsMediaSource = new HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse("http://example.com/your_m3u8_file.m3u8"));
// 准备播放器并开始播放
player.prepare(hlsMediaSource);
player.setPlayWhenReady(true);
}
在上面的代码中,我们首先创建了一个数据源工厂,用于加载m3u8文件。然后,我们使用该数据源工厂创建了一个HLS数据源,并指定要播放的m3u8文件的URL。最后,我们调用player.prepare方法准备播放器,并调用player.setPlayWhenReady方法开始播放。
@Override
protected void onStop() {
super.onStop();
player.setPlayWhenReady(false);
player.release();
}
在上面的代码中,我们在activity或fragment的onStop方法中调用player.setPlayWhenReady(false)停止播放,并调用player.release()释放资源。
请注意,这只是一个简单的示例,你可能还需要处理错误处理、进度更新等其他功能。你可以根据自己的需求进一步扩展代码。