android – setDataSourceFD失败:状态= 0x80000000在三星手机上播放aac文件

android – setDataSourceFD失败:状态= 0x80000000在三星手机上播放aac文件,第1张

概述我需要录制和播放音频文件,我使用这两段代码: 用于录制: private void initRecorder() { try { mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutp 我需要录制和播放音频文件,我使用这两段代码:

用于录制:

private voID initRecorder() {    try {        mRecorder = new MediaRecorder();        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);        mRecorder.setoutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);        mRecorder.setoutputfile(RECORD_file_name);        mRecorder.prepare();        mRecorder.start();    } catch (IllegalStateException | IOException e) {        Utility.e("initRecorder: " + e.getMessage());    }}

对于玩:

try {        fileDescriptor fd = null;        fileinputStream fis = new fileinputStream(RECORD_file_name);        fd = fis.getFD();        if (fd != null) {            mMediaPlayer = new MediaPlayer();            mMediaPlayer.setDataSource(fd);            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);            mMediaPlayer.prepare();            mMediaPlayer.setonPreparedListener(new MediaPlayer.OnPreparedListener() {                @OverrIDe                public voID onPrepared(MediaPlayer mp) {                    if (mPlayTime > 0) {                        mMediaPlayer.seekTo(mPlayTime);                    }                    mMediaPlayer.start();                    setStatus(STATUS_PLAYING);                }            });            mMediaPlayer.setonCompletionListener(new MediaPlayer.OnCompletionListener() {                @OverrIDe                public voID onCompletion(MediaPlayer mp) {                    mMediaPlayer.release();                    RecordMomentActivity.this.mPlayTime = 0;                    setStatus(STATUS_NOT_PLAYING);                }            });        }    } catch (Exception e) {        Utility.e("Exception: " + e.getMessage());        setStatus(STATUS_NOT_PLAYING);    }}

此代码在Nexus 5(AndroID 6.0)和LG G3与AndroID 5.0上运行良好,录制和播放音频.但是当我使用三星手机时,我得到了例外:

setDataSourceFD Failed.: status=0x80000000

有人遇到这个问题吗?并知道我应该如何处理它?如果没有,我可以用来录制和播放音频文件吗?

解决方法 如果文件已损坏或处理的MediaPlayer服务未正确处理,则会发生这种情况.

看一些例子:

MediaPlayer.setDataSource causes IOException for valid file

Exception when calling setDataSource(FileDescriptor) method (failed.: status=0x80000000)

此外,可能是录制后文件未正确关闭且播放器出现故障.

总结

以上是内存溢出为你收集整理的android – setDataSourceFD失败状态= 0x80000000在三星手机上播放aac文件全部内容,希望文章能够帮你解决android – setDataSourceFD失败:状态= 0x80000000在三星手机上播放aac文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存