ExoPlayer的例子给一个
时间: 2024-05-07 22:21:21 浏览: 101
以下是一个基本的ExoPlayer示例,用于播放本地视频文件:
```
// 创建一个ExoPlayer实例
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
// 创建一个媒体源
MediaItem mediaItem = MediaItem.fromUri(localUri);
MediaSource mediaSource = new ProgressiveMediaSource.Factory(
new DefaultDataSourceFactory(context)).createMediaSource(mediaItem);
// 将媒体源设置到ExoPlayer中
player.setMediaSource(mediaSource);
// 准备播放器和媒体源
player.prepare();
// 开始播放
player.play();
```
其中,`localUri`是本地视频文件的URI。您可以使用不同的`MediaSource`实现来支持不同的媒体类型和协议。例如,`ProgressiveMediaSource`支持本地和远程文件,以及HTTP和HTTPS协议。请注意,您还需要在代码中处理播放器的生命周期,例如在Activity或Fragment的`onStart`和`onStop`方法中分别调用`player.setPlayWhenReady(true)`和`player.setPlayWhenReady(false)`。
相关问题
写一个ExoPlayer 例子
好的,以下是一个简单的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()方法释放播放器资源。
exoplayer exoplayer-core exoplayer-ui版本对应
ExoPlayer的版本号由3个数字组成,格式为X.Y.Z,其中X是主版本号,Y是次版本号,Z是补丁版本号。exoplayer-core和exoplayer-ui的版本号应该与ExoPlayer库的版本号匹配,以确保兼容性。
以下是一些常见的ExoPlayer版本和对应exoplayer-core和exoplayer-ui的版本:
- ExoPlayer 2.14.0对应exoplayer-core版本为2.14.0,exoplayer-ui版本为2.14.0
- ExoPlayer 2.13.3对应exoplayer-core版本为2.13.3,exoplayer-ui版本为2.13.3
- ExoPlayer 2.12.1对应exoplayer-core版本为2.12.1,exoplayer-ui版本为2.12.1
请注意,这只是一些常见版本的例子。您应该根据您使用的ExoPlayer版本,查看哪个版本的exoplayer-core和exoplayer-ui是兼容的。
阅读全文