기술나눔

Audio Toolbox의 오디오 서비스를 사용하여 AAC 재생

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Audio Toolbox의 오디오 서비스를 사용하여 AAC 재생

Audio Toolbox의 오디오 서비스를 사용하여 AAC 재생

주로 3단계로 나누어집니다.

  1. 사용 AudioServicesCreateSystemSoundID 시스템 사운드를 생성합니다.
  2. 사용 AudioServicesAddSystemSoundCompletion 콜백을 설정합니다.
  3. 사용 AudioServicesPlaySystemSound 연주를 시작하세요.

~에 대한 AudioServicesPlaySystemSound 기능:

이 기능은 짧은 사운드(30초 이하)를 재생합니다. 소리가 몇 초 동안 재생될 수 있으므로 이 기능은 비동기적으로 수행됩니다.사운드 재생이 언제 완료되었는지 확인하려면 다음을 호출하세요.AudioServicesAddSystemSoundCompletion 콜백 함수를 등록하는 함수입니다.

일부 iOS 기기에서는 다음을 수행할 수 있습니다. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 진동을 불러일으키기 위해. 다른 iOS 기기에서는 이 상수로 이 함수를 호출해도 효과가 없습니다.

이 기능으로 재생할 수 있는 오디오 파일의 제한 사항은 다음과 같습니다.

  • 지속시간이 30초를 넘지 않음
  • 선형 PCM 또는 IMA4(IMA/ADPCM) 형식
  • 포장됨 .caf, .aif, 또는 .wav 파일

그러나 실제로 AAC 파일도 정상적으로 재생할 수 있습니다. 또한 이 기능에는 다음과 같은 많은 제한 사항이 있습니다.

  • 사운드는 프로그래밍된 볼륨 조절 없이 현재 시스템 오디오 볼륨에서 재생됩니다.
  • 소리가 즉시 재생됩니다.
  • 루핑 및 스테레오 위치 지정은 지원되지 않습니다.
  • 동시 재생은 불가능하며, 한 번에 하나의 사운드만 재생할 수 있습니다.
  • 사운드는 장치 스피커에서 로컬로 재생되며 오디오 라우팅을 사용하지 않습니다.

핵심 코드:

- (void)btnClick:(UIButton *)sender
{
    self.mButton.hidden = YES;
    NSURL *audioUrl = [[NSBundle mainBundle] URLForResource:@"music" withExtension:@"aac"];
    SystemSoundID soundID;
    // create a system sound object
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)audioUrl, &soundID);
    // register a callback function that is invoked when a specified system sound finishes playing
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, &playCallback, (__bridge void *_Nullable)(self));
    // play a system sound object
    AudioServicesPlaySystemSound(soundID);
}

void playCallback(SystemSoundID ssID, void  *clientData)
{
    ViewController *vc = (__bridge ViewController *)clientData;
    vc->_mButton.hidden = NO;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

프로젝트 주소: https://github.com/UestcXiye/AudioToolboxSystemSound.