提前谢谢..。我正在我的视频播放器应用程序中实现音频音轨功能,我正在成功地加载音轨并在对话框中显示,但我的问题是,当我试图更改音轨时,音轨没有改变,请看我的代码,谁能知道我在哪里出错了?
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
videoViewSeekBar.setMax(videoView.getDuration());
mediaPlayer.start();
checkMultiAudioTrack(mediaPlayer);
}
});
这里是方法
private void checkMultiAudioTrack(MediaPlayer mediaPlayer) {
MediaPlayer.TrackInfo trackInfos[] = mediaPlayer.getTrackInfo();
ArrayList<Integer> audioTracksIndex = new ArrayList<>();
for (int i = 0; i < trackInfos.length; i++) {
if (trackInfos[i].getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO) {
audioTracksIndex.add(i);
}
}
if (trackInfos.length > 2) {
AlertDialog.Builder builder = new AlertDialog.Builder(VideoPlayerActivity.this);
builder.setTitle("Audio Tracks");
String values[] = new String[audioTracksIndex.size()];
for (int i = 0; i < audioTracksIndex.size(); i++) {
values[i] = String.valueOf("Track " + i);
}
/*
* SingleChoice means RadioGroup
* */
builder.setSingleChoiceItems(values, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mediaPlayer.selectTrack(which);
Toast.makeText(VideoPlayerActivity.this, "Track " + which + " Selected", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.show();
}
}
发布于 2022-02-17 10:30:52
我没有测试它,但是看起来您在selectTrack
中放错了索引。which
是带有名称的值的索引,但您需要在audioTracksIndex
中保存的轨道索引。换句话说,用selectTrack(which)
更改selectTrack(audioTracksIndex.get(which))
。
如果这不起作用,那么检查您是否处于调用selectTrack的正确状态。
https://stackoverflow.com/questions/67148667
复制相似问题