exoplayer2音轨切换MappedTrackInfo.getTrackGroups(int)' on a null object reference

雕·不懒惰 2021-03-31 05:03:31

private void initializePlayer() {
trackSelector = new DefaultTrackSelector();
MappingTrackSelector.MappedTrackInfo trackInfo = trackSelector.getCurrentMappedTrackInfo();
if (trackInfo == null)
return;

DefaultTrackSelector.Parameters parameters = trackSelector.getParameters().buildUpon()
.setSelectionOverride(1, trackInfo.getTrackGroups(1),
new DefaultTrackSelector.SelectionOverride(1, 1))
.build();
trackSelector.setParameters(parameters);

player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
playerView.setPlayer(player);
player.setPlayWhenReady(true);
player.seekTo(currentWindow, playbackPosition);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "ExoPlayer"));
Uri uri = Uri.parse(Environment.getExternalStorageDirectory() + "/Movies/3dall.mp4");
MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(uri);
player.prepare(videoSource);
}

第一次用ExoPlayer
实现视频的语言切换,trackInfo 一直是null
new DefaultTrackSelector.SelectionOverride(int groupIndex, int... tracks)中的参数一直没搞明白是什么
第一个是语言索引?第二个是什么
...全文
648 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
雕·不懒惰 2021-04-01
  • 打赏
  • 举报
回复
引用 1 楼 不会写代码的猴子 的回复:
你这里不需要设置那么多吧

trackSelector = new DefaultTrackSelector();
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
就这样就行了
要设置那么多的,因为要改变音轨 播放之后延时获取就可以了
雕·不懒惰 2021-04-01
  • 打赏
  • 举报
回复
解决了,播放之后延时获取
不会写代码的猴子 版主 2021-03-31
  • 打赏
  • 举报
回复
你这里不需要设置那么多吧

trackSelector = new DefaultTrackSelector();
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
就这样就行了

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧