Skip to content

selectTrack

xinbaicheng edited this page Nov 2, 2017 · 5 revisions

音轨切换

播放器支持多音轨切换,下面将介绍相关的接口以及调用示例

版本要求

播放SDK:v2.0.1及以上

相关接口

  1. 获取音轨信息

打开带有音轨的文件时,可以获取到当前视频文件内的所有音轨信息

/** 
 * 获取当前音视频轨道信息
 * @return KSYTrackInfo包含了音()轨的信息
**/
public KSYTrackInfo[] getTrackInfo()

2.切换音轨

/**
 * 开启某(视频、音频、字幕)流
 * @param trackIndex 流索引
 */
public void selectTrack(int trackIndex)

/**
 * 关闭某(视频、音频、字幕)流
 * @param trackIndex 流索引
 */
public void deselectTrack(int trackIndex)

示例代码

切换音轨之前,必须要先关掉原来的音轨,再打开指定的音轨

  1. 获取所有音轨
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;
}
Clone this wiki locally