2016-01-14 21 views
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。如何增加?如何在vitamio player android中手動設置緩衝區大小?因爲我的.ts文件大小爲12MB,但每段只需4MB。如何增加?

+0

你有沒有試過mVideoView.setBufferSize(int size)? – Kyk

回答

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 
    } 
}); 

您可以檢查library瞭解更多信息。

/** 
    * 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; 
}