安卓手机APP开发__媒体开发部分__音轨的选择

安卓手机APP开发__媒体开发部分__音轨的选择

安卓手机APP开发__媒体开发部分__音轨的选择

目录

概述

查询可用的音轨

修改轨道选择参数

基于约束的轨道选择

选择特定的轨道

禁用轨道的类型和组

定制化轨道选择器

隧道化

音频静默

概述

当一个媒体项包括了多个音轨时,音轨的选择就是一个确定由哪一个音轨进行播放的过程. 音轨的选择过程由TrackSelectionParameters进行配置,它允许有多个不同的约束和覆盖 被指定的受影响的音轨.

查询可用的音轨

你能监听被通知的Player.Listener.onTracksChanged,得到音轨改变的信息,包括:

当媒体项的准备工作完成时,可用的音轨被确定和知道了.注意的是播放器需要准备一个媒体 项,来知道它包含了什么音轨.

归因于从一个媒体项到另一个媒体项的播放切换,可用的音轨发生了改变.

被选择的音轨改变了. 代码如下:

Kotlin

player.addListener(

object : Player.Listener {

override fun onTracksChanged(tracks: Tracks) {

// Update UI using current tracks.

}

}

)

你也能调用方法player.getCurrentTracks()来查询当前的音轨.返回的音轨包括了 音轨的群体的对象的列表,音轨在一个单独的群中,表示了相同的内容但是格式是不同的.

作为一个如何把音轨放在一个群体中的例子,考虑一个可适配的播放,它的主视频的生成被提供了 五个不同的比特率,一个备用的视频的生成被提供了两个不同的比特率。备用的视频例如在一个体育 比赛中的不同的摄像机的角度的视频。在这个例子中,有两个视频轨道组,一个对应着主视频 包括了五个轨道,第二个视频轨道组对应着备用视频,它包括了两个轨道。

音频轨道的语言不同,则不能放在一个组里,因为不同的语言的内容被认为是不同的. 因此,同一种语言的音频轨道仅有比特率,采样率,频道数等不同,这是可以放在一组里的. 这个原则也能应用于文本轨道.

能查询每一组来确定播放支持哪一个轨道,哪一个是当前被选择的,以及每一个轨道使用什么格式:

Kotlin

for (trackGroup in tracks.groups) {

// Group level information.

val trackType = trackGroup.type

val trackInGroupIsSelected = trackGroup.isSelected

val trackInGroupIsSupported = trackGroup.isSupported

for (i in 0 until trackGroup.length) {

// Individual track i

🌟 相关推荐

“齑粉”什么意思(拼音,读音等)
365bet开户地址

“齑粉”什么意思(拼音,读音等)

📅 10-10 👀 4509
五粮液1218纪念酒52°度500ml单瓶礼盒装价格图表
365bet开户地址

五粮液1218纪念酒52°度500ml单瓶礼盒装价格图表

📅 10-29 👀 2611
科普文章
365bet体育投注网站

科普文章

📅 07-24 👀 169