【问题标题】:Getting recent Bytes while recording Audio Android在录制音频 Android 时获取最近的字节
【发布时间】:2021-05-04 10:57:41
【问题描述】:

我正在开发音频录制功能。我希望将录制的音频保存到我的应用程序的内部缓存目录中,以便我以后可以处理它并将其发送到我的服务器。我在我的 Android Manifest 中使用了RECORD_AUDIO_PERMISSION

以下是我计划用于录制音频并将其保存到文件中的代码。

    String uuid = UUID.randomUUID().toString();
    fileName = getExternalCacheDir().getAbsolutePath() + "/" + uuid + ".3gp";


    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setOutputFile(fileName);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);


    try {
        recorder.prepare();
        recorder.start();
    } catch (IOException e) {}

我希望上面的代码可以正常工作,但我面临另一个问题。我想为我使用这个library 的应用程序创建一个波形效果。该库适用于以下代码:

   //get a reference to the visualizer
    mVisualizer = findViewById(R.id.blast);

    //TODO: get the raw audio bytes
    
    //pass the bytes to visualizer
    mVisualizer.setRawAudioBytes(bytes);

现在,我的问题是如何实时获取正在录制和保存的音频的字节数? 我应该定期读取文件并从中提取最近的字节,还是有其他方法可以实现这一点

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 您应该使用MediaPlayer以外的其他方法。类似that
  • @AndriiOmelchenko 谢谢你的评论。很快就会看到并更新您。
  • 在我的情况下,我使用了 webview 和 webRTC 记录,请参阅stackoverflow.com/questions/67269328/…
  • 嗨,@AndriiOmelchenko 我查看了您提供的链接,但不明白如何准确使用它。能否请教一下如何使用?
  • @Jintor 是您提供的适用于 Android 的链接吗?

标签: java android file audio audio-recording


【解决方案1】:

根据逻辑,您可以做的是输入小间隔,例如 1 秒(1000 毫秒),然后显示该波形,然后保存您获得的数据。现在保存后获取新输入,然后在形成新数据的波形(或执行任何操作)后将新数据添加到以前的数据中。

只需在单独的线程上执行这些操作即可。

【讨论】:

  • 感谢您的回答。您能否提供输入新数据(字节)的示例代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多