世博会录音webm

sta*_*kas 9 audio android audio-recording react-native expo

我正在使用expo,我试图通过使用webm输出格式(Expo.Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_WEBM)来记录android .我的问题是我已经尝试了所有不同的编码器,但它们似乎都没有用.我期待vorbis编码器工作(Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_VORBIS)但我总是得到一个例外

    {
        "tryLoc": "root",
        "completion": {
            "type": "throw",
            "arg": {
                "framesToPop": 1,
                "code": "E_AUDIO_RECORDING",
                "message": "Start encountered an error: recording not started",
                "stack": "Error: Start encountered an error: recording not started\n    at createErrorFromErrorData (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2297:17)\n    at blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2249:27\n    at MessageQueue.__invokeCallback (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2691:18)\n    at blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2436:18\n    at MessageQueue.__guardSafe (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2604:11)\n    at MessageQueue.invokeCallbackAndReturnFlushedQueue (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2435:14)\n    at http://172.16.6.80:19001/debugger-ui/debuggerWorker.js:72:58"
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的配置:

const recording = new Audio.Recording();
debugger;
await recording.prepareToRecordAsync({
  android: {
    extension: '.webm',
    outputFormat: Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_WEBM,
    audioEncoder: Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_VORBIS,
    sampleRate: 44100,
    numberOfChannels: 2,
    bitRate: 128000
  },
  ios: {
    extension: '.wav',
    audioQuality: Audio.RECORDING_OPTION_IOS_AUDIO_QUALITY_MAX,
    sampleRate: 44100,
    numberOfChannels: 2,
    bitRate: 128000,
    linearPCMBitDepth: 16,
    linearPCMIsBigEndian: false,
    linearPCMIsFloat: false,
  },
});
Run Code Online (Sandbox Code Playgroud)

关于为什么会发生这种情况的想法以及我必须使用的适当编码器是什么?

BH7*_*BH7 1

我在黑暗中拍摄,希望这可能有所帮助。

\n\n

启用音频并自定义音频模式

\n\n
\n

Expo.Audio.setIsEnabledAsync(value) 默认情况下启用音频,但如果您想在独立的应用程序中编写自己的音频 API,则可能需要禁用 Expo 音频 API。

\n\n

参数值(布尔值) \xe2\x80\x94 true 启用 Expo Audio, false\n 禁用它。

\n\n

返回一个 Promise,如果无法为设备启用音频播放,该 Promise 将被拒绝。

\n\n

Expo.Audio.setAudioModeAsync(mode) 我们提供此 API 来自定义 iOS 和 Android 上的音频体验。

\n
\n\n

这些键值对也可能有帮助。

\n\n
    \n
  • 准备ToRecordAsync()
  • \n
  • stopAndUnloadAsync()
  • \n
\n\n

音频编码器列表:(*我建议使用默认值只是为了调试它)

\n\n

音频编码器

\n\n
    \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_DEFAULT

  • \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AMR_NB

  • \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AMR_WB

  • \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC

  • \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_HE_AAC

  • \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC_ELD

  • \n
  • Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_VORBIS

  • \n
\n\n

参考expo.io(2018 年 2 月 13 日)。

\n\n

注意 *.webm(仅在 Android 4.0 及更高版本中可流式传输)

\n\n

参考developer.android.com(2018 年 2 月 13 日)。

\n\n

尝试使用下面的代码,高低质量以及 android 和 ios:

\n\n
  export const RECORDING_OPTIONS_PRESET_HIGH_QUALITY: RecordingOptions = {\n  android: {\n    extension: \'.m4a\',\n    outputFormat: RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_MPEG_4,\n    audioEncoder: RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC,\n    sampleRate: 44100,\n    numberOfChannels: 2,\n    bitRate: 128000,\n  },\n  ios: {\n    extension: \'.caf\',\n    audioQuality: RECORDING_OPTION_IOS_AUDIO_QUALITY_MAX,\n    sampleRate: 44100,\n    numberOfChannels: 2,\n    bitRate: 128000,\n    linearPCMBitDepth: 16,\n    linearPCMIsBigEndian: false,\n    linearPCMIsFloat: false,\n  },\n};\n\nexport const RECORDING_OPTIONS_PRESET_LOW_QUALITY: RecordingOptions = {\n  android: {\n    extension: \'.3gp\',\n    outputFormat: RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_THREE_GPP,\n    audioEncoder: RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AMR_NB,\n    sampleRate: 44100,\n    numberOfChannels: 2,\n    bitRate: 128000,\n  },\n  ios: {\n    extension: \'.caf\',\n    audioQuality: RECORDING_OPTION_IOS_AUDIO_QUALITY_MIN,\n    sampleRate: 44100,\n    numberOfChannels: 2,\n    bitRate: 128000,\n    linearPCMBitDepth: 16,\n    linearPCMIsBigEndian: false,\n    linearPCMIsFloat: false,\n  },\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

参考expo.io(2018 年 2 月 13 日)。

\n