gpt4 book ai didi

android - 媒体播放器错误的 getDuration(1, -107)

转载 作者:行者123 更新时间:2023-11-30 03:18:25 25 4
gpt4 key购买 nike

在我的 listView 中,我正在显示一些来自 API 的媒体内容。 API 不包含有关媒体持续时间的任何信息,因此我想我应该创建一个帮助程序类来处理这个问题。

public static String getPodDuration(String url){
utils = new Utilities();
try{
mep = getInstance();
mep.reset();
mep.setDataSource(url);
mep.prepareAsync();
mep.setOnPreparedListener(new OnPreparedListener() {

@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
duration = mep.getDuration();
Log.i("duration", String.valueOf(duration));
}
});
} catch(IllegalArgumentException e){

} catch(IllegalStateException e){

} catch(IOException e){

}
return String.valueOf(utils.milliSecondsToTimer(duration));
}

getInstance()如下:

static MediaPlayer mep = null;
public static MediaPlayer getInstance(){
if(mep == null){
mep = new MediaPlayer();
}
return mep;
}

所以在这些方法的帮助下,在主类中我传递了媒体文件的 URL。但出于某种原因,它只给我 0:00 的值(value)。 utils.milliSecondsToTimer(duration) 方法工作正常。

我收到以下错误:

error (1, -107)

有人可以帮助实现吗?我不需要播放这个媒体,我只需要知道它的持续时间。

最佳答案

编辑后的回复:

错误error (1, -107)来自播放器引擎,即 NuPlayer玩家尝试连接到 URL 的引擎.错误代码 -107对应ENOTCONN (引用: errno )。请检查 URL 的连接你已经给了玩家。

P.S: 你能试试 file基于输入?

旧响应:

错误prepareAsync called in state 8表示 MediaPlayerPREPARED状态,因此调用 prepareAsync 是错误的在这种状态下。我觉得你的问题可能是由于 reset作为实现的一部分被调用。请引用这个link here这解释了新创建和重置播放器之间的差异,特别是状态图下方的段落。

我建议您修改 get 实例实现以包含 release并如下所示删除重置。我觉得这应该可以解决您的问题。

public static String getPodDuration(String url){
utils = new Utilities();
try{
mp = getInstance();
mp.setDataSource(url);
mp.prepareAsync();
........

static MediaPlayer mp = null;
public static MediaPlayer getInstance(){
if(mp != null){
mp.release();
}
mp = new MediaPlayer();
return mp;
}

关于android - 媒体播放器错误的 getDuration(1, -107),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625223/

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