Ответ отрицательный, но есть способ обойти это.
Я не понимал, что когда вы создаете аудиоплеер с очередью буфера и выводом в нее, а приемник в качестве uri, он воспроизводится в буфер так же быстро, как получает данные.
Поэтому, когда я понял, что это то, что происходит, я создал еще один аудиоплеер, который имеет буферную очередь в качестве источника и выходной микс в качестве приемника.
После того, как все настроено, я приостанавливаю первый аудиоплеер (uriPlayer), который запускает «загрузку» и передает данные в буфер. когда предварительная выборка uriPlayer говорит, что данных достаточно, я проверяю «длительность» uriPlayer, чтобы узнать, как долго длится песня, и затем создаю буфер, достаточно большой для хранения данных PCM из uriPlayer на основе продолжительности и выборки. скорость (и выходные каналы, 2 для стерео и 1 для моно).
Я ставлю этот буфер в очередь приемных буферов uriPlayers, затем устанавливаю состояние uriPlayers в Play, чтобы он начал загружать все данные в буфер в своей очереди буферов.
Затем я ставлю этот же буфер в очередь исходного буфера второго проигрывателя (musicPlayer) и также устанавливаю его состояние в Play, что запускает воспроизведение буфера в его очереди буферов.
пока uriPlayer может загружать содержимое музыкального файла быстрее, чем музыкальный проигрыватель воспроизводит из буфера, просто вызвав getPosition из uriPlayer, чтобы узнать, где в песне идет его текущий поток, и находится ли он «впереди» позиции musicPlayer сейчас играет, все работает отлично! если загрузка замедляется или идет слишком медленно, просто приостановите воспроизведение musicPlayer, если он опережает uriPlayer.
person
iedoc
schedule
18.01.2013