Google官方ExoPlayer视频播放框架学习(二)

本文介绍了如何使用Google的ExoPlayer实现播放列表功能,包括创建播放列表、自适应流媒体源的构建以及事件监听。通过自适应跟踪选择确保在网络带宽变化时仍能流畅播放,并展示了如何处理DASH内容。同时,文章还讲解了如何创建监听内部类以获取播放状态变化的回调。
摘要由CSDN通过智能技术生成

上一篇中我们完成了一个简单的视频播放器demo,不过它只能播放单个资源文件,如果是连续播放多个的功能则无法满足了。所以,现在我们来实现播放列表。


1.创建播放列表

​ 使用ConcatenatingMediaSource来创建Playlists, 这个类允许我们将媒体资源结合起来并无缝地播放它们。它负责在后台进行缓冲,这样用户在更改源时就不会看到缓冲旋转器。

使用下面代码替换旧的buildMediaSource方法:

PlayerActivity.java

private MediaSource buildMediaSource(Uri uri) {
   
 // These factories are used to construct two media sources below
 DataSource.Factory dataSourceFactory =
         new DefaultDataSourceFactory(this, "exoplayer-codelab");
 ProgressiveMediaSource.Factory mediaSourceFactory =
         new ProgressiveMediaSource.Factory(dataSourceFactory);

 // Create a media source using the supplied URI
 MediaSource mediaSource1 = mediaSourceFactory.createMediaSource(uri);

 // Additionally create a media source using an MP3
 Uri audioUri = Uri.parse(getString(R.string.media_url_mp3));
 MediaSource mediaSource2 = mediaSourceFactory.createMediaSource(audioUri);

 return new ConcatenatingMediaSource(mediaSource1, mediaSource2);
}

测试修改后的播放控件功能,现在上一个和下一个按钮已经连接了媒体源的顺序导航。

在这里插入图片描述

截屏: 显示next和previous按钮的回放控件 。


2.自适应流

什么是自适应流?

​ 自适应流是一种根据可用网络带宽改变流媒体质量的流媒体技术,这允许用户体验他们的带宽所允许的最佳质量的媒体。

	通常,相同的媒体内容被分割成具有不同质量(比特率和分辨率)的多个轨道。播放器根据可用的网络带宽选择一个音轨。每个音轨都被分割成特定时长的片段,通常在2到10秒之间。这允许播放器在可用带宽变化时快速切换音轨,播放器负责拼接这些块在一起无缝播放。 
Adaptive track selection( 自适应跟踪选择 )

自适应流的核心是为当前环境选择最合适的轨道, 更新应用程序,使用自适应轨道选择播放自适应流媒体源。

  • 使用下面的代码升级initializePlayer

PlayerActi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值