- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我的代码 fragment ,我想在其中播放来自服务器的视频
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();
}
}
ProgressDialog
仅在 videoView.setOnPreparedListener
和 videoView.setOnErrorListener
中被关闭。但是 ProgressDialog
没有被关闭,视频也没有播放。我尝试放置日志并查看,日志打印到 videoView.setOnPreparedListener
之前,之后不显示任何日志。我猜 Listeners
没有注册。
感谢任何帮助。提前致谢。
编辑:
'我正在尝试流式传输实时视频,如果视频可用,它应该转到 videoView.setOnPreparedListener
并播放视频。如果直播不可用(即,视频将在一段时间后直播),那么它应该转到 videoView.setOnErrorListener
并返回到先前的 Activity
,结果为“1”
和
视频通过 RTSP
流式传输
最佳答案
经过大量研究并在 Preethi Rao 的帮助下,我了解到错误出在 URL
中。
URL
可能有视频(如果是实时视频的时间),也可能没有视频(如果实时视频将在一段时间后流式传输)。如果我在实时视频不可用时尝试流式传输视频,则 Listeners
不会被触发。如果实时视频可用,Listeners
将被解雇。因此,videoView.setOnPreparedListener
和 videoView.setOnErrorListener
没有附加。
我编写了一个运行 60 秒的处理程序,如果没有附加 Listeners
,我将返回到之前的 Activity
。
代码如下:
private void PlayVideo() {
try {
isListenerAttached = false;
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);
// Using this Handler to revert to previous Activity when the Video View is not attached to Listeners
// As the Buffering Video dialog doesn't get dismissed if Video View is not attached to Listeners
runOnUiThread(new Runnable() {
@Override
public void run() {
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
if(!isListenerAttached){
dismissProgressDialog();
Intent in = new Intent();
setResult(1, in);
finish();
}
}
}, WAIT_TIME);
}
});
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
isListenerAttached = true;
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) {
isListenerAttached = true;
dismissProgressDialog();
Intent in = new Intent();
setResult(1, in);
finish();
return false;
}
});
} catch (Exception e) {
dismissProgressDialog();
finish();
}
}
关于android - videoView.setOnPreparedListener、videoView.setOnCompletionListener 和 videoView.setOnErrorListener 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30340700/
我有一个服务,它实现了 MediaPlayer.OnPreparedListener。 到目前为止,我在一个函数中调用了 player.setOnPreparedListener(this) 并且运行
我正在使用 listview 适配器来显示轨道列表。每个列表项都有播放和停止图标来播放和停止轨道。我遇到的问题是当我第一次单击播放按钮时轨道只播放一次。之后如果我停止通过单击停止按钮并尝试播放它没有播
我在使用 Proguard 和我的应用的自定义 VideoView 时遇到问题。似乎混淆我的代码会导致我的 VideoView 出现问题。每当我尝试为视频设置 OnPreparedListener 时
我正在尝试设置一个 OnPreparedListener,但出现此错误: The method setOnPreparedListener(MediaPlayer.OnPreparedListener
这是我的代码 fragment ,我想在其中播放来自服务器的视频 private void PlayVideo() { try { getWindow().setFormat(
我是一名优秀的程序员,十分优秀!