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

上一篇中我们完成了一个简单的视频播放器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( 自适应跟踪选择 )

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

    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    ExoPlayer是一个基于Android平台的开源媒体播放器,它使用了Android本身的MediaCodec来解码视频和音频,并且提供了一些方便的API接口以及默认实现的播放器控件,可以帮助开发者快速地集成视频播放功能。 以下是使用ExoPlayer2播放视频的基本步骤: 1. 添加依赖库:在项目的build.gradle文件中添加以下依赖库: ``` implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X' implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X' ``` 其中,2.X.X是ExoPlayer的版本号。 2. 实例化ExoPlayer:在代码中创建ExoPlayer实例,并设置需要播放的媒体源,如下所示: ``` SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(uri); player.setMediaItem(mediaItem); player.prepare(); player.play(); ``` 其中,context是上下文对象,uri是需要播放的媒体文件的URI。 3. 显示播放器控件:如果需要显示播放器控件,可以使用ExoPlayer提供的默认实现,如下所示: ``` PlayerView playerView = findViewById(R.id.player_view); playerView.setPlayer(player); ``` 其中,player_view是在布局文件中定义的ExoPlayer控件的ID。 4. 控制播放器:ExoPlayer提供了一些API接口以控制播放器的播放、暂停、停止、快进、快退等操作,如下所示: ``` player.play(); player.pause(); player.stop(); player.seekTo(positionMs); ``` 其中,positionMs是需要跳转到的播放位置的毫秒数。 以上是使用ExoPlayer2播放视频的基本步骤,你可以根据自己的需求进行适当的调整和修改。

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值