【问题标题】:Sound metering react-native声音计量反应原生
【发布时间】:2019-05-22 18:53:21
【问题描述】:

我正在构建一个 react-native 应用程序。 我正在尝试测量当前的声级(以分贝为单位)。

正在使用的库:react-native-audioreact-native-sound

有人熟悉这个功能吗?

谢谢。

【问题讨论】:

    标签: android audio react-native


    【解决方案1】:

    使用 react-native-audio 库,您可以获得唯一 iOS 的计数。

    对于Android中的currentMetering,需要在原生模块中自定义。我已经更新它在您的 package.json 文件中添加以下内容,而不是您的代码。您将获得 Android 和 iOS 的 currentMetering 计数。

    "react-native-audio": "git+https://github.com/Harsh2402/react-native-audio.git",
    

    【讨论】:

    • 你能分享一下你在退出 git repo 时有什么变化吗?
    【解决方案2】:

    您可以使用react-native-audio currentMetering 值 - 以便实时获取声级。

    首先,您必须初始化您的录音机(我假设您已经完成了)。我以与下面类似的方式使用prepareRecordingAtPath

    AudioRecorder.prepareRecordingAtPath(audioPath, {
      SampleRate: 22050,
      Channels: 1,
      AudioQuality: "Low",
      AudioEncoding: "aac",
      MeteringEnabled: true
    });
    

    然后,一旦您调用了 AudioRecorder.startRecording();(请注意,您还可以访问 .pause().stop() 方法

    现在为了处理音频电平,您将不得不检索onProgress 方法返回的数据。据我记得,应该有一些currentMetering 值可以访问。请注意,定义此行为将在每次检索到不同的分贝读数时触发该操作。像这样

    AudioRecorder.onProgress = data => {
        let decibels = Math.floor(data.currentMetering);
    
        //DO STUFF
      };
    

    希望这会有所帮助,

    【讨论】:

    • 首先 - 谢谢。我使用metering: true 而不是MeteringEnabled: true. 请注意-该功能仅适用于IOS。存储库中有一个用于 android 计量支持的开放 PR。只有根据此 PR:github.com/jsierles/react-native-audio/pull/185/commits
    • @Hajaj 你知道他们在公开版本中是否有适用于 android 的这个功能?
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    相关资源
    最近更新 更多