Android 如何在exo player中切换可用曲目格式(HLS)?
Android 如何在exo player中切换可用曲目格式(HLS)?,android,http-live-streaming,exoplayer,exoplayer2.x,Android,Http Live Streaming,Exoplayer,Exoplayer2.x,player.getCurrentTrackGroups().get(0).formats 我看到这种方法,我可以获得可用格式的数组,但我不知道如何从中选择一种。后端支持不同格式具有不同分辨率的HLS。Exo player会根据网络速度自动选择格式,但我想像在youtube上那样手动选择格式。[从接受的答案中获取帮助][1] [took help from the accepted answer][1] DefaultTrackSelector trackSelector = new Defau
player.getCurrentTrackGroups().get(0).formats代码>
我看到这种方法,我可以获得可用格式的数组,但我不知道如何从中选择一种。后端支持不同格式具有不同分辨率的HLS。Exo player会根据网络速度自动选择格式,但我想像在youtube上那样手动选择格式。[从接受的答案中获取帮助][1]
[took help from the accepted answer][1]
DefaultTrackSelector trackSelector = new DefaultTrackSelector(this);
SimpleExoPlayer player = new SimpleExoPlayer.Builder(this).setTrackSelector(trackSelector).build();
//insert above two lines in your initPlayer() method
//this method does the actual work
private void applySelection(int trackIndex) {
int videoRendererIndex = 0;
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
//This logic is to find the find the video renderer index
for (int i = 0; i < mappedTrackInfo.length; i++) {
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(i);
if (trackGroups.length != 0) {
switch (player.getRendererType(i)) {
case C.TRACK_TYPE_VIDEO:
videoRendererIndex = i;
break;
}
}
}
trackGroups = mappedTrackInfo != null ? mappedTrackInfo.getTrackGroups(videoRendererIndex) : null;
int groupIndex = 0;//which group has the the formats you want to use, in my case it was 0.
//You can use the debugger or you can Log the whole trackGroup to see its details.
DefaultTrackSelector.SelectionOverride override = new DefaultTrackSelector.SelectionOverride(groupIndex, trackIndex);
parametersBuilder = new DefaultTrackSelector.ParametersBuilder(this);
if (trackGroups != null) {
parametersBuilder.setSelectionOverride(videoRendererIndex, trackGroups, override);
trackSelector.setParameters(parametersBuilder);
}
}
//incase you want to switch to auto quality select, insert these lines you code
trackSelector.clearSelectionOverride(0,trackGroups);
DefaultTrackSelector trackSelector=新的DefaultTrackSelector(此);
SimpleExoPlayer=新建SimpleExoPlayer.Builder(this).setTrackSelector(trackSelector.build();
//在initPlayer()方法中插入上面两行
//这种方法做实际工作
私有void applySelection(int-trackIndex){
int videorenderindex=0;
MappingTrackSelector.MappedTrackInfo MappedTrackInfo=trackSelector.getCurrentMappedTrackInfo();
//此逻辑用于查找视频渲染器索引
对于(int i=0;i