Berbagi teknologi

Mainkan AAC menggunakan Layanan Audio dari Audio Toolbox

2024-07-12

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

Mainkan AAC menggunakan Layanan Audio dari Audio Toolbox

Mainkan AAC menggunakan Layanan Audio dari Audio Toolbox

Terutama dibagi menjadi 3 langkah:

  1. menggunakan AudioServicesCreateSystemSoundID Buat suara sistem.
  2. menggunakan AudioServicesAddSystemSoundCompletion Setel panggilan balik.
  3. menggunakan AudioServicesPlaySystemSound Mulai bermain.

tentang AudioServicesPlaySystemSound fungsi:

Fungsi ini memutar suara pendek (durasi 30 detik atau kurang). Karena suara mungkin diputar selama beberapa detik, fungsi ini dilakukan secara asinkron.Untuk mengetahui kapan suara selesai diputar, hubungiAudioServicesAddSystemSoundCompletion fungsi untuk mendaftarkan fungsi panggilan balik.

Di beberapa perangkat iOS, Anda bisa AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) untuk memanggil getaran. Di perangkat iOS lain, memanggil fungsi ini dengan konstanta ini tidak berpengaruh.

Berikut ini adalah batasan file audio yang dapat diputar oleh fungsi ini:

  • Durasinya tidak lebih dari 30 detik
  • Dalam format PCM linier atau IMA4 (IMA/ADPCM)
  • Dikemas dalam .caf, .aif, atau .wav mengajukan

Namun nyatanya, file AAC juga dapat diputar secara normal. Selain itu, fungsi ini memiliki banyak keterbatasan:

  • Suara diputar pada volume audio sistem saat ini, tanpa kontrol volume terprogram.
  • Suara segera diputar.
  • Perulangan dan pemosisian stereo tidak didukung.
  • Pemutaran secara bersamaan tidak dapat dilakukan, hanya satu suara yang dapat diputar dalam satu waktu.
  • Suara diputar secara lokal di speaker perangkat dan tidak menggunakan perutean audio.

Kode inti:

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

Alamat proyek: https://github.com/UestcXiye/AudioToolboxSystemSound.