您可以通过访问 MediaPlayer 对象来设置缓冲区大小。
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//mp.setVideoQuality(MediaPlayer.VIDEOQUALITY_LOW);
//mp.setPlaybackSpeed(1.0f);
mp.setBufferSize(1024*1024*4);//4MB buffer size
}
});
您可以查看图书馆以获取更多信息。
/**
* The buffer to fill before playback, default is 1024*1024 Byte
*
* @param bufSize buffer size in Byte
*/
public native void setBufferSize(long bufSize);
您可以使用以下缓冲区大小计算器。它为您提供了应为缓冲区大小设置的秒数。( source ) 然后你可以计算你的缓冲区大小(以字节为单位)。
// buffer padding in sec.
// should be at least twice as long as the keyframe interval and fps, e.g.:
// keyframe interval of 30 at 30fps --> min. 2 sec.
public static int BUFFER_PADDING = 3;
// videoLength in sec., videoBitrate and bandwidth in kBits/Sec
public static int calculate(int videoLength, int videoBitrate, int bandwidth) {
int bufferTime;
if (videoBitrate > bandwidth) {
bufferTime = (int) Math.ceil(videoLength - videoLength / (videoBitrate / bandwidth));
} else {
bufferTime = 0;
}
bufferTime += BUFFER_PADDING;
return bufferTime;
}