使用 Mediaplayer 时出现错误 -19,0?

发布于 2024-12-01 02:02:27 字数 1191 浏览 1 评论 0原文

E/MediaPlayer(20473): error (-19, 0)

I/MyApp   (20473): Decoding lala.mp3

I/StagefrightPlayer(   68): setDataSource('mypath')

E/AudioFlinger(   68): no more track names available

E/AudioTrack(   68): AudioFlinger could not create track, status: -12

E/AudioSink(   68): Unable to create audio track

有人知道我为什么会收到这个吗?这通常发生在使用 mediaPLayer 播放大约 100 多个音频文件后。我就是这样玩的

public RenderResultFormat DoIt() {
   if(mp!=null){
         mp.release();
         mp = null;
     }
AudioRenderer mr = new AudioRenderer(); mp = mr.AudioRenderer(filePath);}   



private class AudioRenderer extends Activity {
    private MediaPlayer AudioRenderer(String filePath) {
//delcare mediaplayer variables, path etc
  mp= MediaPlayer.create(this, path);
 if(mp != null){  
   int duration = mp.getDuration();
                mp.start();
                try {
                    Thread.sleep(duration);
                } catch (InterruptedException e2) {
                    e2.printStackTrace();
                    System.out.println("I've been interrupted >:(");
                }
                }
}return mp;}

我是不是漏掉了什么?对于android开发来说相当陌生。谢谢

E/MediaPlayer(20473): error (-19, 0)

I/MyApp   (20473): Decoding lala.mp3

I/StagefrightPlayer(   68): setDataSource('mypath')

E/AudioFlinger(   68): no more track names available

E/AudioTrack(   68): AudioFlinger could not create track, status: -12

E/AudioSink(   68): Unable to create audio track

Does any1 know why i'm getting this? This usually happens after playing about 100+ of so audio files using mediaPLayer. I'm playing it like this

public RenderResultFormat DoIt() {
   if(mp!=null){
         mp.release();
         mp = null;
     }
AudioRenderer mr = new AudioRenderer(); mp = mr.AudioRenderer(filePath);}   



private class AudioRenderer extends Activity {
    private MediaPlayer AudioRenderer(String filePath) {
//delcare mediaplayer variables, path etc
  mp= MediaPlayer.create(this, path);
 if(mp != null){  
   int duration = mp.getDuration();
                mp.start();
                try {
                    Thread.sleep(duration);
                } catch (InterruptedException e2) {
                    e2.printStackTrace();
                    System.out.println("I've been interrupted >:(");
                }
                }
}return mp;}

Am i missing something? Quite new to android development. Thank you

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

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

发布评论

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

评论(1

三岁铭 2024-12-08 02:02:27

这个解决方案对我来说效果很好(播放资源)。只需实现一个 OnCompletionListener

private void playbeep(int id) {

    MediaPlayer mPlayer;
    mPlayer = MediaPlayer.create(context, id);
    mPlayer.start();
    mPlayer.setOnCompletionListener(new OnCompletionListener() {        
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });
}

This solution works well for me (playing a ressource). Just implement an OnCompletionListener

private void playbeep(int id) {

    MediaPlayer mPlayer;
    mPlayer = MediaPlayer.create(context, id);
    mPlayer.start();
    mPlayer.setOnCompletionListener(new OnCompletionListener() {        
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文