gpt4 book ai didi

android - VideoView/MediaPlayer 错误 (1, -18)

转载 作者:行者123 更新时间:2023-11-29 02:10:41 24 4
gpt4 key购买 nike

我有一个针对 API 级别 2.2 构建的应用程序。此应用程序包含一个视频,该视频会在启动后立即开始播放。视频在 VideoView 中播放,实际视频文件存储在我的内部存储(我的应用程序包的文件目录)中。

大多数时候它启动得很好。但偶尔我会收到一个错误弹出窗口,提示“抱歉,无法播放此视频。”并有一个确定按钮。只要我按下确定按钮,视频就会开始正确播放。我需要弄清楚是什么导致了这个错误,或者至少我如何能够捕捉到它是什么错误并让它重试,因为在我点击确定后它总是完美无缺。在显示此错误框时的日志中,我看到以下消息:

 ERROR/PVOMXAudDecNode(21215): Ln 2232 OMX_EventError nData1 -2147479547 nData2 0
ERROR/PlayerDriver(21215): Command PLAYER_PREPARE completed with an error or info -18
ERROR/MediaPlayer(9282): message received msg=100, ext1=1, ext2=-18
ERROR/MediaPlayer(9282): error (1, -18)
ERROR/MediaPlayer(9282): callback application
ERROR/MediaPlayer(9282): back from callback
ERROR/MediaPlayer(9282): Error (1,-18)
DEBUG/VideoView(9282): Error: 1,-18

我在哪里可以找到有关错误代码 -18 究竟表示什么的引用资料?有没有人有任何建议,我可以首先尝试阻止它发生。我只在 Sprint Epic 4g 上观察到这个错误。

编辑:据我所知,我没有收到任何异常。我假设正在发生的事情是视频 View 知道捕获导致的任何异常并抛出弹出窗口。在我的日志中,没有异常堆栈跟踪,只是对错误 -18 的引用。

至于我是怎么调用prepare的。我用这个:

    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
mVideoView.start();
}
});

还有这个:

mVideoView.setVideoPath(file.getAbsolutePath());

它调用 prepare 作为 setVideoPath 的一部分(我假设它确实如此,但此方法未记录)。这导致 onPrepared 在我的监听器中被调用。

编辑 2:现在我只是像这样添加了一个 onErrorListener:

编辑重要!此代码将在 ICS 上无限错误循环。对于 ICS 设备,我取消了 setPath 调用,而是返回 false。它自己再试一次,就成功了。

    mVideoView.setOnErrorListener(new OnErrorListener(){

@Override
public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
Log.i(myTag, "MP ERROR: "+ arg1 + " - " + arg2);
mVideoView.setVideoPath(file.getAbsolutePath());
return true;
}

});

这捕获了错误,我可以在我的日志中看到发生此错误时 arg2 = -18。我只是让它重试并返回 true,这样它就不会抛出对话框。到目前为止,我从未见过它连续两次失败,所以它总是正确地启动视频并且不会无限循环。

如果有人能准确地告诉我错误代码 -18 表示什么,我仍然非常感兴趣。

最佳答案

如何捕获 prepare() 抛出的潜在异常?您是否专门捕获了 IOException,然后重试调用 prepare()

尝试使用 prepareAsync() 代替,它不会阻塞并在播放器准备就绪时调用监听器。它也不会抛出 IOException

关于android - VideoView/MediaPlayer 错误 (1, -18),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com