Tôi đang cố triển khai danh sách phát video để chúng có chuyển đổi suôn sẻ từ video này sang video khác tiếp theo. Đối tượng mediaPlayer có một phương thức prepareasync() có vẻ như đã tạo sẵn video để sẵn sàng phát. Làm cách nào để gọi phương thức prepareasync từ đối tượng VideoView? Các ví dụ tôi tìm thấy cho mediaPlayer hoặc là không sử dụng VideoView và dường như tạo bề mặt từ đầu. Hoặc các ví dụ sử dụng mediaPlayer như tham số trả về trên videoview eventlisteners mà dường như chỉ xảy ra sau khi videoview.play(). Tôi muốn có quyền truy cập vào mediaplayer của videoview trước khi gọi phương thức play để tôi có thể gọi đến prepareasync() và sau đó là play().Gọi MediaPlayer.PrepareAsync từ VideoView
6
A
Trả lời
0
VideoView là trình bao bọc xung quanh MediaPlayer và SurfaceView, do đó bạn không phải tự làm điều đó. Tôi tin rằng các wrapper không chuẩn bị khi bạn gọi setVideoURI. Có thể giữ được mediaplayer bên trong VideoView thông qua event handler onPrepared, và một khi bạn đã có nó, tôi đoán bạn có thể gọi chuẩn bị cho mình sau lần đầu tiên, nhưng tôi thu thập nội bộ rất phức tạp và không được ghi chép đầy đủ có thể không hoạt động như mong đợi.
1
Giống như user1023110 được đề cập, VideoView là trình bao bọc xung quanh MediaPlayer. Lặn vào mã nguồn (vì tài liệu không hữu ích chút nào) Tôi đã xác nhận rằng nội bộ gọi là PrepareAsync() theo phương thức riêng của mình openVideo():
private void openVideo() {
if (mUri == null || mSurfaceHolder == null) {
// not ready for playback just yet, will try again later
return;
}
// Tell the music playback service to pause
// TODO: these constants need to be published somewhere in the framework.
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
mContext.sendBroadcast(i);
// we shouldn't clear the target state, because somebody might have
// called start() previously
release(false);
try {
mMediaPlayer = new MediaPlayer();
if (mAudioSession != 0) {
mMediaPlayer.setAudioSessionId(mAudioSession);
} else {
mAudioSession = mMediaPlayer.getAudioSessionId();
}
mMediaPlayer.setOnPreparedListener(mPreparedListener);
mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener);
mMediaPlayer.setOnCompletionListener(mCompletionListener);
mMediaPlayer.setOnErrorListener(mErrorListener);
mMediaPlayer.setOnInfoListener(mOnInfoListener);
mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
mCurrentBufferPercentage = 0;
mMediaPlayer.setDataSource(mContext, mUri, mHeaders);
mMediaPlayer.setDisplay(mSurfaceHolder);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setScreenOnWhilePlaying(true);
mMediaPlayer.prepareAsync();
// we don't set the target state here either, but preserve the
// target state that was there before.
mCurrentState = STATE_PREPARING;
attachMediaController();
} catch (IOException ex) {
Log.w(TAG, "Unable to open content: " + mUri, ex);
mCurrentState = STATE_ERROR;
mTargetState = STATE_ERROR;
mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0);
return;
} catch (IllegalArgumentException ex) {
Log.w(TAG, "Unable to open content: " + mUri, ex);
mCurrentState = STATE_ERROR;
mTargetState = STATE_ERROR;
mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0);
return;
}
}
Các vấn đề liên quan
- 1. IllegalStateException cho MediaPlayer.prepareAsync
- 2. VideoView looping video Replenish
- 3. seekTo trong VideoView
- 4. Android VideoView lặp lại
- 5. VideoView và Progressive download
- 6. Đổi kích thước VideoView
- 7. Xoay một VideoView android
- 8. Android nhận đường dẫn nguồn video từ VideoView
- 9. Phát video từ trạng thái tạm dừng trong VideoView
- 10. Quay videobuffer thực tại Videoview
- 11. VideoView với Cookie (hoặc Tiêu đề)
- 12. Android VideoView lưu luồng RTSP
- 13. Trong tab thiên hà, onCompletionListener của videoView không được gọi là
- 14. Kéo dài để lấp đầy VideoView, tỷ lệ co của VideoView
- 15. Android VideoView không chơi Portrait Hướng
- 16. VideoView không bắt đầu khi vô hình
- 17. Vòng lặp video liền mạch với VideoView
- 18. Android MediaPlayer/VideoView w/Phụ đề (SRT)
- 19. Thêm VideoView vào bố cục XML
- 20. VideoView getCurrentPosition() bất thường trên Acer Iconia A200
- 21. Android VideoView hiển thị rõ ràng sau stopPlayback()
- 22. Đang cố gắng để chơi video từ thư mục thô (VideoView)
- 23. Phát hiện nếu VideoVIew đang lưu vào bộ đệm
- 24. Thay đổi VideoView & Toàn màn hình & Định hướng - Android
- 25. Android 3.1/Galaxy Tab/VideoView sẽ không phát
- 26. Hiển thị và ẩn nút phát qua VideoView trong Android
- 27. cách sửa đổi chiều rộng của videoview theo chương trình
- 28. Cách ẩn các điều khiển trong VideoView trong Android?
- 29. các seekTo() chức năng không hoạt động trong VideoView
- 30. Android chân dung video định hướng sai trong VideoView