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)中的参数一直没搞明白是什么
第一个是语言索引?第二个是什么
...全文
431 3 打赏 收藏 举报
写回复
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);
就这样就行了
  • 打赏
  • 举报
回复
相关推荐
用来播放视频文件。该VideoView类可以加载各种来源的图像(如资源或内容提供商),需要计算它从视频测量,以便它可以在任何布局管理器使用,并提供诸如缩放和着色的各种显示选项。在其他的平台上面可能VideoPlayer开发是一个比较有挑战性的工作,但是在Android上面VideoPlayer的开发,基本上可以做到傻瓜式啦。本文简单对VideoPlayer的开发进行简单的介绍。 实例 1.布局文件 on="1.0" encoding="utf-8"?> 2.Java代码 package com.wjq; import android.app.Activity; import android.content.pm.ActivityInfo; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.MediaController; import android.widget.VideoView; public class VideoViewDemo extends Activity implements MediaPlayer.OnErrorListener,MediaPlayer.OnCompletionListener{ public static final String TAG = "VideoPlayer"; private VideoView mVideoView; private Uri mUri; private int mPositionWhenPaused = -1; private MediaController mMediaController; /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.videoview); this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); mVideoView = (VideoView)findViewById(R.id.videoview); //文件路径 mUri = Uri.parse(Environment.getExternalStorageDirectory() + "/ziranyouli.3gp"); //Create media controller mMediaController = new MediaController(this);   //设置MediaController mVideoView.setMediaController(mMediaController); } //监听MediaPlayer上报的错误信息 @Override public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub return false; } //Video播完的时候得到通知 @Override public void onCompletion(MediaPlayer mp) { this.finish(); }   //开始 public void onStart() { // Play Video mVideoView.setVideoURI(mUri); mVideoView.start(); super.onStart(); }   //暂停 public void onPause() { // Stop video when the activity is pause. mPositionWhenPaused = mVideoView.getCurrentPosition(); mVideoView.stopPlayback(); Log.d(TAG, "OnStop: mPositionWhenPaused = " + mPositionWhenPaused); Log.d(TAG, "OnStop: getDuration = " + mVideoView.getDuration()); super.onPause(); } public void onResume() { // Resume video player if(mPositionWhenPaused >= 0) { mVideoView.seekTo(mPositionWhenPaused); mPositionWhenPaused = -1; } super.onResume(); } }
发帖
Android

7.9w+

社区成员

移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
帖子事件
创建了帖子
2021-03-31 05:03
社区公告
暂无公告