Android中的MediaPlayer默认是不支持'm3u8'格式的播放的,需要使用第三方库来实现'm3u8'的播放。

解决方案一:使用ExoPlayer库播放'm3u8'格式的视频。

  1. 在app的build.gradle文件中添加依赖:
implementation 'com.google.android.exoplayer:exoplayer-core:2.x.x'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.x.x'

其中2.x.x代表最新的版本号。

  1. 创建一个ExoPlayer实例并设置播放地址:
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse('http://example.com/path/to/video.m3u8'));
player.setMediaItem(mediaItem);
player.prepare();
player.play();

其中context是上下文对象,'http://example.com/path/to/video.m3u8'是'm3u8'格式的视频地址。

  1. 在Activity的onDestroy()方法中释放MediaPlayer资源:
@Override
protected void onDestroy() {
    super.onDestroy();
    player.release();
}

解决方案二:使用ijkplayer库播放'm3u8'格式的视频。

  1. 在app的build.gradle文件中添加依赖:
implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.x'
implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.x'

其中0.8.x代表最新的版本号。

  1. 创建一个IjkMediaPlayer实例并设置播放地址:
IjkMediaPlayer player = new IjkMediaPlayer();
player.setDataSource('http://example.com/path/to/video.m3u8');
player.prepareAsync();
player.start();

其中'http://example.com/path/to/video.m3u8'是'm3u8'格式的视频地址。

  1. 在Activity的onDestroy()方法中释放MediaPlayer资源:
@Override
protected void onDestroy() {
    super.onDestroy();
    player.release();
}

以上两种方案都需要在AndroidManifest.xml文件中添加以下权限:

<uses-permission android:name='android.permission.INTERNET' />

注意:以上代码中的地址仅作为示例,实际使用时需要替换为有效的'm3u8'格式视频的地址。

Android MediaPlayer m3u8播放格式问题及解决方案

原文地址: https://www.cveoy.top/t/topic/qd3V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录