0
{
    Intent i = getIntent();
    Bundle bundle = i.getExtras();
    if (bundle != null) {
        String url = i.getStringExtra("movieUrl");
        urlArray = url.trim().split(",");
        urlLength = urlArray.length;
        tempString = urlArray[loop].toString();
        mVideoView.setVideoPath(tempString);
        mVideoView.setMediaController(new MediaController(this));
        mVideoView.requestFocus();
        // Show progressbar
        progressDialog.show();
    }  

因为我的 .ts 文件大小为 12MB,但每个段只需要 4MB。如何增加?

4

1 回答 1

0

您可以通过访问 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;
}
于 2016-04-29T10:32:53.057 回答