Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 视频播放器加载缓慢_Android_Performance_Exoplayer - Fatal编程技术网

Android 视频播放器加载缓慢

Android 视频播放器加载缓慢,android,performance,exoplayer,Android,Performance,Exoplayer,因此,我正在为ExoPlayer使用自定义控制器布局,如果DefaultTimeBar的搜索时间为00:01,而我转到00:03,则会有3或4秒的时间 延迟。我试图播放的视频在我的SD卡中 视频大小为813kb,mp4 我需要增加缓冲区段大小还是需要自定义加载控件 玩家: 公共类VideoPlayer扩展了AppCompative活动{ PlayerView PlayerView; SimpleXoplayer SimpleXoplayer; @凌驾 创建时受保护的void(Bundle sav

因此,我正在为ExoPlayer使用自定义控制器布局,如果
DefaultTimeBar
的搜索时间为00:01,而我转到00:03,则会有3或4秒的时间 延迟。我试图播放的视频在我的SD卡中

视频大小为813kb,mp4

我需要增加缓冲区段大小还是需要自定义加载控件

玩家:

公共类VideoPlayer扩展了AppCompative活动{
PlayerView PlayerView;
SimpleXoplayer SimpleXoplayer;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u video\u player);
}
@凌驾
受保护的void onStart(){
super.onStart();
playerView=findviewbyd(R.id.exoPlayer);
File File=新文件(“sdcard/”+Environment.DIRECTORY_DOWNLOADS+“/”+“playthis.mp4”);
Uri=Uri.fromFile(文件);
uri1=Uri.parse(“文件:/”+Uri);
LoadControl LoadControl=新的DefaultLoadControl()
带宽计带宽计=新的默认带宽计();
TrackSelector TrackSelector=新的默认TrackSelector(新的AdaptiveTrackSelection.Factory(带宽计));
simpleExoPlayer=ExoPlayerFactory.newSimpleInstance(this、trackSelector、loadControl);
MediaSource=buildMediaSource(uri1);
playerView.setPlayer(simpleExoPlayer);
playerView.setKeepScreenOn(真);
simpleExoPlayer.prepare(mediaSource);
simpleExoPlayer.setplaywhenrady(true);
simpleExoPlayer.addListener(新的Player.EventListener(){
@凌驾
PlayerStateChanged上的公共无效(布尔playWhenReady,int playbackState){
if(playWhenReady&&playbackState==ExoPlayer.STATE\u READY){
}
if(playbackState==ExoPlayer.STATE_结束){
完成();
}
}
});
}
公共媒体源buildMediaSource(Uri){
返回新的extractoremiasource.Factory(新的DefaultDataSourceFactory(这个“Test3”)).createMediaSource(uri);
} 
}
自定义控制器的xml:


如何修复延迟?

检查以下内容:

如果您查看答案,您可以找到最小化缓冲时间的方法:

//Minimum Video you want to buffer while Playing
private int MIN_BUFFER_DURATION = 2000;
//Max Video you want to buffer during PlayBack
private int MAX_BUFFER_DURATION = 5000;
//Min Video you want to buffer before start Playing it
private int MIN_PLAYBACK_START_BUFFER = 1500;
//Min video You want to buffer when user resumes video
private int MIN_PLAYBACK_RESUME_BUFFER = 2000;

LoadControl loadControl = new DefaultLoadControl.Builder()
    .setAllocator(new DefaultAllocator(true, 16))
    .setBufferDurationsMs(MIN_BUFFER_DURATION,
         MAX_BUFFER_DURATION,
         MIN_PLAYBACK_START_BUFFER,
         MIN_PLAYBACK_RESUME_BUFFER)
    .setTargetBufferBytes(-1)
    .setPrioritizeTimeOverSizeThresholds(true).createDefaultLoadControl();

TrackSelector trackSelector = new DefaultTrackSelector();
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
选中此项:

如果您查看答案,您可以找到最小化缓冲时间的方法:

//Minimum Video you want to buffer while Playing
private int MIN_BUFFER_DURATION = 2000;
//Max Video you want to buffer during PlayBack
private int MAX_BUFFER_DURATION = 5000;
//Min Video you want to buffer before start Playing it
private int MIN_PLAYBACK_START_BUFFER = 1500;
//Min video You want to buffer when user resumes video
private int MIN_PLAYBACK_RESUME_BUFFER = 2000;

LoadControl loadControl = new DefaultLoadControl.Builder()
    .setAllocator(new DefaultAllocator(true, 16))
    .setBufferDurationsMs(MIN_BUFFER_DURATION,
         MAX_BUFFER_DURATION,
         MIN_PLAYBACK_START_BUFFER,
         MIN_PLAYBACK_RESUME_BUFFER)
    .setTargetBufferBytes(-1)
    .setPrioritizeTimeOverSizeThresholds(true).createDefaultLoadControl();

TrackSelector trackSelector = new DefaultTrackSelector();
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);

我确实试过了,但是延迟仍然存在@纳扎里尔莫申斯基也尝试过,但拖延仍然存在@纳扎里尔莫申斯基