【问题标题】:Recording Audio and Playing Audio at the same time同时录制音频和播放音频
【发布时间】:2011-07-03 17:06:18
【问题描述】:

在我的应用程序中,我正在录制来自麦克风的输入,并且在某个时刻我正在播放声音(录制仍在进行中)。 现在记录器“停止”记录(mrec.stop() 可能仍然使用),LogCat 条目似乎是:

    07-03 18:40:34.811: INFO/AudioHardwareALSA(2179): Output standby called!!. Turn off PCM device.

我正在两部手机上进行测试,一部是三星 Galaxy S,另一部是三星 Galaxy 3。在 Galaxy S 上,一切正常(即录制仍在进行)。 除了规格之外,这两款手机的区别在于 Galaxy S 有 2.2.1,而 Galaxy 3 有 2.2 我想,一种解决方法是再次初始化 mediarecorder,但这会使应用程序卡顿,这是不想要的。

以下是如何设置媒体播放器和媒体记录器的更多信息:

    void Init()
    {
      mp = MediaPlayer.create(getContext(), R.raw.pop);
      mrec = new MediaRecorder();
      mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
      mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
      mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
      [..]
      mrec.setOutputFile(audiofile.getAbsolutePath());
      mrec.prepare();
      mrec.start();
    }

    void Event()
    {
      mp.start();
    }

为什么录制“停止”?有没有办法停止停止?这是期望的行为吗?我怎样才能找出问题所在?

感谢任何提示。

【问题讨论】:

  • 你有什么解决办法吗?我想做同样的事情!
  • @Gerd 如果你找到了也请给我们提供解决方案..

标签: android audio media-player playback recorder


【解决方案1】:

尝试使用原生的基本播放器和录音机...这些都可以通过 AudioTrack 类和其他相关的 api(如音频格式)访问。使用它们,您可以在块或缓冲区(显式字节数组)中录制和播放 pcm 音频数据,并使用循环将缓冲区写入任何您想要的内容。可能会允许同时进行重新编码和播放

祝你好运

【讨论】:

    猜你喜欢
    • 2011-05-12
    • 2012-04-09
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多