bas*_*sta 5 media android stream android-mediaplayer
我开发了一款应用程序,它充分利用了原生Android的MediaPlayer.我的班级使用Media Player的源代码如下.问题是只有在播放几毫秒之后的某些设备上(我只听到声音,屏幕仍然是黑色的)我不断收到错误(100,0)根据文件说 http://developer.android.com/reference /android/media/MediaPlayer.html#MEDIA_ERROR_SERVER_DIED
在论坛上我发现我每次拿到它都需要重置播放器......但是我在短时间内得到它然后它永远消失了.由于播放无用,我无法每秒重置播放器.我不明白为什么有些设备会出现这个问题而其他设备却没有.我知道的那个有Android操作系统> 4.0.
当然首先调用init()然后再调用showVideo().调用带有100个代码的最后一个onError.什么是一个潜在的解决方案,使流运行,并在一会儿后不要破坏...
提前致谢
public class NativePlayer extends Player implements OnBufferingUpdateListener,
OnCompletionListener, OnErrorListener, OnInfoListener {
private VideoView videoview;
private PlayerListener listener;
private MainActivity context;
private final Logger logger = LoggerFactory.getLogger(NativePlayer.class);
@Override
public void init(MainActivity activity) {
this.videoview = (VideoView) activity.findViewById(R.id.video);
context = activity;
}
@Override
public void showVideo(final String url, final PlayerListener _listener) {
listener = _listener;
videoview.setVisibility(View.VISIBLE);
try {
Uri video = Uri.parse(url);
videoview.setVideoURI(video);
} catch (Exception e) {
logger.error("Error playing video", e);
listener.onVideoError();
return;
}
videoview.setOnCompletionListener(this);
videoview.setOnErrorListener(this);
videoview.requestFocus();
videoview.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
videoview.start();
if (listener != null) {
listener.onVideoStarted();
}
}
});
}
@Override
public void onStop() {
stop();
}
private void stop() {
if (videoview == null) {
return;
}
if (videoview.isPlaying()) {
videoview.stopPlayback();
}
}
@Override
public void onDestroy() {
}
@Override
public void onCompletion(MediaPlayer mp) {
stop();
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
if (listener != null) {
listener.onVideoError();
}
return false;
}
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (listener != null) {
listener.onInfo(what, extra);
}
return false;
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
if (listener != null) {
listener.onBufferingUpdate(percent);
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 0
我遇到了同样的问题(错误 100、媒体播放器死机等)。我通过使用 .stopPlayback() 解决它,并再次启动流。下面是我的部分代码:
private void startWatchVideo(final string video_link) {
videoViewVA.setMediaController(new MediaController(this));
videoViewVA.setVideoURI(Uri.parse(video_link));
videoViewVA.requestFocus();
videoViewVA.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer media) {
media.start();
}
});
videoViewVA.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer media, int what, int extra) {
if (what == 100)
{
videoViewVA.stopPlayback();
startWatchVideo(video_link);
}
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
在实践中,视频看起来速度变慢了
归档时间: |
|
查看次数: |
8327 次 |
最近记录: |