0
我有包含VideoView的一個實例,其MediaPlayer的參考一個簡單的活動。我的目標是使用MediaPlayer對象中的setNextMediaPlayer()API,以最小化2個視頻之間的切換時間。的Android setNextMediaPlayer()API是不是在玩下一個視頻
在下面的代碼中,1st視頻播放良好。當視頻完成後,視頻的音頻開始在後臺播放,但僅顯示視頻的最後一幀。
你知道問題出在哪裏嗎?爲什麼不是第二張視頻的視頻顯示?
private VideoView player1;
private MediaPlayer mediaPlayer1;
public static final String URL_1 = "https://example.com/video1.mp4";
public static final String URL_2 = "https://example.com/video2.mp4";
public static final String TAG = "PrebufferingActivity";
public boolean FIRST_TIME = true;
public int count = 0;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prebuffering);
player1 = (VideoView) findViewById(R.id.videoPlayer1);
player1.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer1 = mp;
if(FIRST_TIME == true)
{
mediaPlayer1.start();
player1.requestFocus();
FIRST_TIME = false;
}
}
});
player1.setOnInfoListener(new OnInfoListener(){
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra)
{
if(what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
{
count++;
if(count % 2 != 0)
{
Log.d(TAG, "Odd count (" + count + ") Prebuffering URL_2");
MediaPlayer myMediaPlayer = MediaPlayer.create(PrebufferingActivity.this, Uri.parse(URL_2));
mp.setNextMediaPlayer(myMediaPlayer);
}
else
{
Log.d(TAG, "Even count (" + count + ") Prebuffering URL_1");
MediaPlayer myMediaPlayer = MediaPlayer.create(PrebufferingActivity.this, Uri.parse(URL_1));
mp.setNextMediaPlayer(myMediaPlayer);
}
}
return false;
}
});
player1.setOnCompletionListener(new OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer mp) {
}
});
// Player 1
player1.setMediaController(new MediaController(this));
player1.setVideoURI(Uri.parse(URL_1));
}
嗨demaksee,謝謝您的回答。我創建了一個新的MediaPlayer並將其設置爲此處的下一個媒體播放器:MediaPlayer myMediaPlayer = MediaPlayer.create(PrebufferingActivity.this,Uri.parse(URL_1)); mp.setNextMediaPlayer(myMediaPlayer);由於「mp」與VideoView相關聯,不應該這樣工作嗎? – codeshark 2015-02-11 22:47:42
不應該。 VideoView只知道自己的MediaPlayer(在這種情況下是mp),在這種情況下方法setNextMediaPlayer不起作用。如果您需要自己的自定義視頻視圖,則應該編寫它: public class CustomVideoView extends View {0} {0} {0} MediaPlayer mp = new MediaPlayer(); ... } – demaksee 2015-02-12 23:05:25