Dưới đây là đoạn mã của tôi, nơi tôi muốn chơi một đoạn video đến từ máy chủvideoView.setOnPreparedListener, videoView.setOnCompletionListener và videoView.setOnErrorListener không nhận được gọi
private void PlayVideo() {
try {
getWindow().setFormat(PixelFormat.TRANSLUCENT);
MediaController mediaController = new MediaController(VideoActivity.this);
mediaController.setAnchorView(videoView);
Uri video = Uri.parse(videoPath);
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
videoView.requestFocus();
videoPlayer.removeAllViews();
videoPlayer.setVisibility(View.GONE);
videoView.setVisibility(View.VISIBLE);
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
dismissProgressDialog();
videoView.bringToFront();
videoView.setFocusable(true);
videoView.start();
contentStarted = true;
}
});
videoView.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
contentStarted = false;
}
});
videoView.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
dismissProgressDialog();
Intent in = new Intent();
setResult(1, in);
finish();
return false;
}
});
} catch (Exception e) {
dismissProgressDialog();
finish();
}
}
Các ProgressDialog
được sa thải chỉ trong videoView.setOnPreparedListener
và videoView.setOnErrorListener
. Nhưng ProgressDialog
không bị loại bỏ và video không được phát. Tôi đã thử đặt Nhật ký và xem, Nhật ký được in tối đa ngay trước videoView.setOnPreparedListener
và sau đó không có Nhật ký nào được hiển thị. Listeners
không được đăng ký tôi đoán.
Mọi trợ giúp đều được đánh giá cao. Cảm ơn trước.
EDIT:
'm cố gắng để dòng một video trực tiếp, nếu video là availbale nó nên đến videoView.setOnPreparedListener
và nên chơi video. Nếu Live là không có sẵn (ví dụ, Video sẽ xuất hiện sau một thời gian) sau đó nó nên đến videoView.setOnErrorListener
và trở về trước Activity
với kết quả "1"
và
Video được xem trực tiếp trên RTSP
videoPlayer.removeAllViews(); để làm gì ? –
Tôi có một trình phát video thay thế (dành cho quảng cáo) mà tôi sẽ xóa để chỉ videoView để phát video trực tiếp có mặt –
Tôi nghĩ bạn nên gọi videoView.prepare(); –