Delphi XE7: воспроизведение потокового аудио в AndroidИсточник: webdelphi.ru
На сегодняшний день в составе FMX (FireMonkey) имеются компоненты для воспроизведения аудио- и видео- файлов - это TMediaPlayer и TMediaPlayerControl. Компоненты вполне прекрасно работают с локальными файлами, расположенными на устройстве. Однако в век облачных хранилищ и всяческого рода онлайн-сервисов с легальной музычкой было бы неплохо, если бы можно было проигрывать музыку непосредственно из Сети. По некоторым, не зависящим от нас причинам, TMediaPlayer таковые действия проводить не может. Поэтому я решил посмотреть как это в Android, в принципе, можно воспроизвести потоковое аудио и воспроизвести эти действия в Delphi XE7. Итак, смотрим, как можно относительно просто реализовать воспроизведение потокового аудио в Delphi XE7 при работе с Android. В Android за воспроизведение медиафайлов отвечает MediaPlayer. Этот объект имеет достаточно большие возможности работы с аудио и видео, в т.ч. позволяет подготавливать плеер к воспроизведению как синхронно, так и асинхронно, воспроизводить потоковое аудио и видео и, конечно, такие обязательные для любого медиаплеера функции как перемотка, регулировка громкости и т.д. Собственно, в Delphi при работе с Android этот объект и используется, просто не все его возможности можно реализовать так, чтобы сохранить единообразную работу и в Android и в iOS с Windows. Но нам, никто не запрещает отказаться от TMediaPlayer и работать напрямую с MediaPlayer андроида. Для начала воспроизведем mp3-файл с заданного URL. На Stackoverflow имеется вот такой простенький примерчик:
В Delphi XE7 этот же пример можно представить в следующим виде:
MP3-файл прекрасно будет проигрываться из Сети. Однако, довольно часто, для воспроизведения потокового аудио нам требуется получать доступ, например, по тому же OAuth и, впоследствии, передавать в заголовках запроса данные доступа. Как в итоге оказалось, что MediaPlayer в Android и с такой задачей справляется прекрасно. У этого объекта в Android имеется следующая версия метода setDataSource:
или, на Delphi:
В параметре headers мы можем указывать любые заголовки запроса, которые нам необходимо передать на сервер перед запросом файла, в том числе и заголовки авторизации. Итак, представим себе, что мы получили доступ по OAuth к серверу (у нас имеется ключ доступа) и нам необходимо воспроизвести с сервера mp3-файл.
Вот так, довольно просто можно сделать из простого плеера плеер для воспроизведения потокового аудио в Delphi. Интернет-магазин
|