技術共有

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 ファイルも通常どおり再生できます。さらに、この機能には多くの制限があります。

  • サウンドは、プログラムされたボリューム制御なしで、現在のシステムオーディオボリュームで再生されます。
  • サウンドはすぐに再生されます。
  • ループとステレオ定位はサポートされていません。
  • 同時再生はできません。一度に再生できる音は 1 つだけです。
  • サウンドはデバイスのスピーカーでローカルに再生され、オーディオ ルーティングは使用されません。

コアコード:

- (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。