2016-01-14 5 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 12 МБ, но он занимает всего 4 МБ на сегмент. Как увеличить?Как установить размер буфера вручную в викторине игрока android? Потому что мой размер файла .ts размером 12 МБ, но он занимает всего 4 МБ на сегмент. Как увеличить?

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

 Смежные вопросы

  • Нет связанных вопросов^_^