-
Notifications
You must be signed in to change notification settings - Fork 247
selectTrack
xinbaicheng edited this page Nov 2, 2017
·
5 revisions
播放器支持多音轨切换,下面将介绍相关的接口以及调用示例
播放SDK:v2.0.1及以上
- 获取音轨信息
打开带有音轨的文件时,可以获取到当前视频文件内的所有音轨信息
/**
* 获取当前音视频轨道信息
* @return KSYTrackInfo包含了音(视)轨的信息
**/
public KSYTrackInfo[] getTrackInfo()
2.切换音轨
/**
* 开启某(视频、音频、字幕)流
* @param trackIndex 流索引
*/
public void selectTrack(int trackIndex)
/**
* 关闭某(视频、音频、字幕)流
* @param trackIndex 流索引
*/
public void deselectTrack(int trackIndex)
切换音轨之前,必须要先关掉原来的音轨,再打开指定的音轨
- 获取所有音轨
KSYTextureView mKsyTextureView;
// 获取当前多媒体文件的音视频轨道信息
KSYTrackInfo[] trackInfos = mKsyTextureView.getTrackInfo();
// 获取当前正在播放的音频轨道索引
int currentAudioIndex = mKsyTextureView.getSelectedTrack(ITrackInfo.MEDIA_TRACK_TYPE_AUDIO);
for (KSYTrackInfo info : trackInfos) {
switch(info.getTrackType()) {//获取流类型(视频、音频、字幕)
case ITrackInfo.MEDIA_TRACK_TYPE_AUDIO:
// 获取每个音轨的索引以及语种
Log.d("KSYMediaPlayer", "Audio Track Index:"+info.getTrackIndex()+", language:"+info.getLanguage());
break;
}
}
public void switchAudioTrack(int audioIndex) {
if (audioIndex < 0 || audioIndex == currentAudioIndex)
return;
mKsyTextureView.deselectTrack(currentAudioIndex);
mKsyTextureView.selectTrack(audioIndex);
currentAudioIndex = audioIndex;
}