엑스포의 오디오 API

3453 단어 reactreactnative
내가 만들고 있는 반응 네이티브 앱에 오디오를 구현하는 방법을 찾다가 엑스포에 오디오 재생 및 녹음을 허용하는 API가 있음을 발견했습니다. 작은 게임에서 특정 작업을 수행하는 동안 사운드 효과를 엄격하게 재생하는 데 사용하고 있지만 이 API가 제공하는 다른 것들 중에서 상당히 광범위한 녹음 옵션이 있습니다. 이 API에는 비디오 기능도 있지만 다른 블로그용입니다.

설치
expo install expo-av
구성 요소에서:
import { Audio } from 'expo-av';
여기에서 볼 수 있는 iOS 및 Andriod용 구성도 있습니다. https://github.com/expo/expo/tree/master/packages/expo-av

소리 재생을 위한 사용법

사운드를 재생하려면 자산 사운드 파일 또는 URL에 연결된 사운드를 나타내는 개체를 Audio.sound로 설정해야 합니다.
const soundObject = new Audio.Sound();
매개변수도 있습니다.
  • 소스(객체/번호/자산): 사운드의 소스.
  • initialStatus(PlaybackStatusToSet): 사운드의 초기 PlaybackStatusToSet
  • onPlaybackStatusUpdate(함수): 단일 매개변수 PlaybackStatus를 사용하는 함수입니다.
  • downloadFirst(부울): 기본값은 true이고 true인 경우 시스템은 로드하기 전에 리소스를 장치에 다운로드하려고 시도합니다.

  • const soundObject = new Audio.Sound();
    soundObject.setOnPlaybackStatusUpdate(onPlaybackStatusUpdate);
    await soundObject.loadAsync(source, initialStatus, downloadFirst);
    


    이 예제는 선택적 initialStatus, onPlaybackStatusUpdate 및 downloadFirst를 사용하여 소스에서 사운드를 생성하고 로드합니다.

    보고:

    생성이 실패하면 거부되거나 생성이 성공한 경우 다음 사전으로 이행되는 Promise:
  • sound : 새로 생성되어 불러온 Sound 객체.
  • status : Sound 객체의 PlaybackStatus.

  • try {
      const { sound: soundObject, status } = await Audio.Sound.createAsync(
        require('./assets/sounds/hello.mp3'),
        { shouldPlay: true }
      );
    


    여기에서 볼 수 있는 것이 훨씬 더 있습니다: https://docs.expo.io/versions/latest/sdk/audio/

    소리 녹음을 위한 사용법

    이 클래스의 인스턴스를 만든 후 오디오를 녹음하려면 prepareToRecordAsync를 호출해야 합니다. 녹음이 완료되면 stopAndUnloadAsync를 호출합니다. 녹음을 위해 오디오 녹음 권한도 부여해야 합니다. 개체를 Audio.Recording로 설정

    const recording = new Audio.Recording();
    try {
      await recording.prepareToRecordAsync(Audio.RECORDING_OPTIONS_PRESET_HIGH_QUALITY);
      await recording.startAsync();
      // You are now recording!
    


    보고:

    Recording 상태로 해결되는 Promise: 다음 키-값 쌍이 있는 사전. prepareToRecordAsync가 호출되기 전의 상태는 다음과 같습니다.
  • canRecord : false로 설정된 부울.
  • isDoneRecording : false로 설정된 부울.

  • prepareToRecordAsync()가 호출된 후 stopAndUnloadAsync()가 호출되기 전의 상태는 다음과 같습니다.
  • canRecord : true로 설정된 부울.
  • isRecording : 녹음이 현재 녹음 중인지 설명하는 부울입니다.
  • durationMillis : 녹음된 오디오의 현재 지속 시간.

  • stopAndUnloadAsync()가 호출된 후 상태는 다음과 같습니다.
  • canRecord : false로 설정된 부울.
  • isDoneRecording : true로 설정된 부울.
    = durationMillis : 녹음된 오디오의 최종 지속 시간.

  • 이것은 단지 다양한 기능을 엿볼 뿐입니다. 녹음 옵션을 사용하면 훨씬 더 깊이 있고 비트 전송률, 품질 등을 사용자 지정할 수 있습니다.

    참고문헌
  • https://docs.expo.io/versions/latest/sdk/audio/
  • https://docs.expo.io/versions/v39.0.0/sdk/av/
  • https://github.com/expo/expo/tree/master/packages/expo-av
  • 좋은 웹페이지 즐겨찾기