MediaPlayer.setDataSource 在 AMR 音频文件上失败

发布于 2024-10-11 19:36:27 字数 837 浏览 4 评论 0原文

01-15 00:57:08.660: WARN/System.err(25286): java.io.IOException: setDataSourceFD failed.: status=0x80000000
01-15 00:57:08.660: WARN/System.err(25286):     at android.media.MediaPlayer.setDataSource(Native Method)
01-15 00:57:08.660: WARN/System.err(25286):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:854)
...

...当尝试从应用程序缓存目录播放本地 AMR 音频文件时。 HTC Magic、HTC Desire 上都会出现这种情况。 AMR音频文件由SonyEricsson xperia x10 mini录制并从互联网下载。

MediaPlayer 的创建方式如下:

MediaPlayer player = new MediaPlayer();
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
 FileInputStream fis = new FileInputStream(filePath);
 player.setDataSource(fis.getFD());
} catch (Exception e) {
 ...
}

有什么想法吗?

01-15 00:57:08.660: WARN/System.err(25286): java.io.IOException: setDataSourceFD failed.: status=0x80000000
01-15 00:57:08.660: WARN/System.err(25286):     at android.media.MediaPlayer.setDataSource(Native Method)
01-15 00:57:08.660: WARN/System.err(25286):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:854)
...

...when trying to play local AMR audio file from application cache directory. It happens on HTC Magic, HTC Desire. AMR audio file is recorded by SonyEricsson xperia x10 mini and was downloaded from the Internet.

MediaPlayer is created in following way:

MediaPlayer player = new MediaPlayer();
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
 FileInputStream fis = new FileInputStream(filePath);
 player.setDataSource(fis.getFD());
} catch (Exception e) {
 ...
}

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦幻的味道 2024-10-18 19:36:27

我注意到某些 setDataSource 调用可能在不同设备上失败(可能是由于平台特定播放器的特性)。例如,使用 setDataSource( FileDescriptor ) 失败的情况可能会使用 setDataSource( Context, Uri )setDataSource( String ) 正常工作。

尝试使用其他之一,看看是否有效。

I've noticed that certain setDataSource calls can fail on different devices (probably due to idiosyncrasies in the platform specific player). For example, what fails using setDataSource( FileDescriptor ) may work fine with setDataSource( Context, Uri ) or setDataSource( String ).

Try using one of the others and see if that works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文