写一个ExoPlayer 例子
时间: 2023-07-25 07:29:36 浏览: 251
好的,以下是一个简单的ExoPlayer播放本地mp4的例子:
```java
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;
public class MainActivity extends AppCompatActivity {
private PlayerView playerView;
private SimpleExoPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取PlayerView对象
playerView = findViewById(R.id.playerView);
// 创建默认的TrackSelector
DefaultTrackSelector trackSelector = new DefaultTrackSelector(this);
// 创建播放器
player = new SimpleExoPlayer.Builder(this)
.setTrackSelector(trackSelector)
.build();
// 将PlayerView与播放器关联
playerView.setPlayer(player);
// 创建数据源工厂
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "ExoPlayerDemo"));
// 创建媒体资源
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sample_video);
MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
// 准备播放器
player.prepare(mediaSource);
// 播放视频
player.setPlayWhenReady(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放播放器资源
player.release();
}
}
```
以上代码中,我们首先获取了一个PlayerView对象,然后通过DefaultTrackSelector创建了一个默认的TrackSelector,接着创建了一个SimpleExoPlayer对象,并将PlayerView与其关联。然后创建了一个数据源工厂,并通过Uri.parse()方法将本地mp4视频的资源ID转换成Uri格式,再使用ProgressiveMediaSource.Factory创建了一个媒体资源。最后调用prepare()方法准备播放器,调用setPlayWhenReady()方法开始播放视频。需要注意的是,本地mp4视频需要存放在res/raw目录下。同时,在Activity销毁时需要调用player.release()方法释放播放器资源。
阅读全文