2015-12-11 4 views
11

При воспроизведении звука с устройства iOS, подключенного к Apple TV через AirPlay (с использованием iOS9.2), первая секунда воспроизведения звука отключена. Это нежелательное поведение не относится к конкретным приложениям, а относится к системе (например, официальные приложения Apple также имеют эту ошибку).Как уменьшить обрезание при воспроизведении аудио с помощью трансляции?

См https://forums.developer.apple.com/thread/28086

Есть обходной путь, где полный audio file можно играть? Например, добавив blank sounds перед воспроизведением файла? Или изменить способ вызова API? Или я должен ждать официального исправления Apple?

+0

Вы должны ждать исправления в любом случае. Но рассмотрите этот взлом. Если ваш звук не звучит в течение первых двух секунд, то добавьте пустой звук длиной две секунды к вашему оригинальному аудио, так что икоту в синхронизации между приложением и телевизором можно обмануть. Используйте гараж для этого. Или используйте потоки в вашем приложении, например GCD. dispatch_async для асинхронных операций. –

+0

Я только что провел тест, используя последнюю версию (начиная с 20160217) iOS 9.3 beta 3 (13E5200d). Обрезание появляется только в первый раз, а не последующее воспроизведение звука. Это контрастирует с iOS 9.2, которое происходит при каждом воспроизведении звука. –

ответ

0
  1. Эта проблема не встречается в текущих выпусках iOS, поэтому мое первое предложение - обновить.
  2. Если вы должны использовать iOS 9.2, тогда я бы предложил сыграть пустой звуковой файл в течение 2 секунд, а затем запустить полный аудиофайл.

Пример кода:

audioPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

[[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(playEnded:) 
                name:AVPlayerItemDidPlayToEndTimeNotification 
               object:[audioPlayer currentItem]]; 

- (void)playEnded:(NSNotification *)notification 
{ 
    // Start the full audio file here 
}