Метод вывода звука в aimp на андроид
Несмотря на популярность музыкального стриминга, выбором настоящих меломанов остается добротная программа-плеер. С многочисленными эффектами и качественным эквалайзером любимые треки заиграют по-новому, а высокое качество звука не позволит пропустить ни одной нотки. AIMP Player — это один из наиболее известных многофункциональных проигрывателей. Программу используют не только для прослушивания музыки, но и для работы или учебы — с плеером транскрибировать текст или законспектировать лекцию намного проще.
Два способа воспроизведения аудио (PCM) на Android - Введение в использование AudioTrack / OpenSL ES
Эта статья в основном знакомит с простым использованием двух компонентов, которые могут воспроизводить аудио (PCM) на Android-AudioTrack / OpenSL ES.
Наконец, войдите в тему этой статьи и расскажите о простом использовании AudioTrack / OpenSL ES.
Тест2: Оставшиеся методы вывода звука
Нелинейные искажения + шум (при уровне -3 дБ)
Выводы
Что же мы видим? DirectSound в Windows XP оказался очень крут. Побитовое сравнение входного и выходного файла это подтвердило: файлы одинаковые! Честно говоря, я сам не поверил измерениям, но но два повторных измерения дали тот же результат. DirestSound в Windows XP выдает побитово точный вывод звука! Разумеется, это верно, если микшер не работает (отсутствуют другие системные или программные звуки) и системная громкость установлена на 100%.
Если сравнить Direct Sound Windows 7 и WASAPI — первый немного лучше. Но в общем и целом, оба метода вносят совершенно незначительные искажения в исходный сигнал. Едва ли со среднестатистическим оборудованием эту разницу возможно услышать.
2.2. AudioTrack Native API
AudioTrack Native API четыре режима передачи данных:
Transfer Mode | Description |
---|---|
TRANSFER_CALLBACK | В потоке AudioTrackThread используйте функцию обратного вызова audioCallback для активного запроса данных из процесса приложения, ToneGenerator использует эту модель |
TRANSFER_OBTAIN | Процесс приложения должен вызвать receiveBuffer () / releaseBuffer () для заполнения данных. Я еще не видел фактического сценария использования. |
TRANSFER_SYNC | Процесс приложения должен постоянно вызывать write () для записи данных в FIFO, и он может быть заблокирован при записи данных. (Ожидание, пока AudioFlinger :: PlaybackThread потребляет предыдущие данные), в основном применимо ко всем сценариям звука; Соответствует режиму MODE_STREAM API AudioTrack Java |
TRANSFER_SHARED | Процесс приложения передает данные воспроизведения в AudioTrack за один раз, что подходит для сценариев с небольшим объемом данных и высокими требованиями к задержке; Соответствует режиму MODE_STATIC API AudioTrack Java |
Тип аудиопотока AudioTrack Native API:
Stream Type | Description |
---|---|
AUDIO_STREAM_VOICE_CALL | Телефонный голос |
AUDIO_STREAM_SYSTEM | Системный звук |
AUDIO_STREAM_RING | Мелодии звонков, например мелодии звонков, мелодии будильника и т. Д. |
AUDIO_STREAM_MUSIC | Музыкальный звук |
AUDIO_STREAM_ALARM | Предупреждающий сигнал |
AUDIO_STREAM_NOTIFICATION | Тон уведомления |
AUDIO_STREAM_DTMF | DTMF тон (тональный сигнал клавиатуры набора номера) |
Идентификация вывода AudioTrack Native API:
AUDIO_OUTPUT_FLAG | Description |
---|---|
AUDIO_OUTPUT_FLAG_DIRECT | Указывает, что аудиопоток напрямую выводится на аудиоустройство без программного микширования, Обычно используется для вывода звука устройства HDMI |
AUDIO_OUTPUT_FLAG_PRIMARY | Указывает, что аудиопоток необходимо вывести на основное устройство вывода, Обычно используется для рингтонов |
AUDIO_OUTPUT_FLAG_FAST | Указывает, что аудиопоток необходимо быстро вывести на аудиоустройство, Обычно используется в сценах с высокими требованиями к задержке, таких как звуки кнопок и фоновые звуки игры. |
AUDIO_OUTPUT_FLAG_DEEP_BUFFER | Указывает, что выходной аудиопоток может принимать большую задержку, Обычно используется в сценах, не требующих большой задержки, например при воспроизведении музыки и видео. |
AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | Указывает, что аудиопоток не был декодирован программным обеспечением, Его необходимо вывести на аппаратный декодер и декодировать аппаратным декодером. |
Мы используем разные выходные идентификаторы в соответствии с разными сценариями воспроизведения,
Если для звука клавиш и фонового звука игры требуется большая задержка вывода, вам необходимо установить AUDIO_OUTPUT_FLAG_FAST,
Подробнее см. в ToneGenerator, SoundPool и OpenSL ES.
Тестовый пример AudioTrack Natvie API (режим MODE_STATIC / TRANSFER_SHARED),
Расположение файла кода: frameworks / base / media / tests / audiotests / shared_mem_test.cpp:
В последнем разделе все еще есть проблема: как AudioTrack :: getMinFrameCount () вычисляет минимальное количество кадров?
Аудиосистема Android: от AudioTrack до AudioFlinger
1. Обзор Android Audio Framework
Аудио - очень важная часть всей платформы Android, отвечающая за сбор и вывод аудиоданных, управление аудиопотоком, управление аудиоустройствами, регулировку громкости и т. Д. Она в основном включает в себя следующие части:
Платформа аудио приложений: Структура аудио приложений
AudioTrack: отвечает за вывод данных воспроизведения, принадлежит к классу API фреймворка Android.
AudioRecord: отвечает за сбор данных записи, принадлежащих классу API платформы приложения Android.
AudioSystem: отвечает за комплексное управление аудиофайлами, относится к классу API платформы приложений Android.
Аудио Native Framework: Аудио Native Framework
AudioTrack: отвечает за вывод данных воспроизведения, принадлежит к классу API собственной платформы Android.
AudioRecord: отвечает за сбор данных записи, принадлежащих классу API собственной платформы Android.
AudioSystem: отвечает за комплексное управление аудио делами, относится к классу API собственной платформы Android.
Аудио услуги - аудио услуги
AudioPolicyService: разработчик политик аудио, отвечающий за выбор стратегий переключения аудиоустройств, стратегий регулировки громкости и т. Д.
AudioFlinger: исполнитель аудиостратегии, отвечающий за управление устройствами потокового ввода и вывода, а также за обработку и передачу данных аудиопотока.
Audio HAL: уровень абстракции аудиооборудования, отвечающий за взаимодействие с аудиоустройствами, напрямую вызываемый AudioFlinger
С аудио тесно связана MultiMedia, которая отвечает за кодирование и декодирование аудио и видео,
MultiMedia выводит декодированные данные через AudioTrack, а данные записи, собранные AudioRecord, кодируются MultiMedia.
Звук в AIMP Player
Все же первое, чем интересуются при выборе медиаплеера — это качество его звучания. Оно зависит от разрядности, которая у AIMP Player составляет 32 бита — звук настолько чист и детализирован, что все дальнейшие апгрейды человеческое ухо просто не воспримет. Также на качество влияет формат: программа поддерживает 38 вариантов аудиофайлов, среди которых есть и виды без потерь, такие как FLAC и ALAC.
Предлагаются 25 преднастроек — например, Rap для случаев, когда хочется выделить голос, Heavy Metal для жесткого звучания или Large Hall для имитации просторного зала.
Девять специальных эффектов:
1. Реверберация: иллюзия просторного помещения.
2. Фланжер: «летящий» звук.
3. Хорус: имитация хорового звучания.
4. Питч: изменение тональности.
5. Скорость воспроизведения: увеличивается или уменьшается.
Настройка в частности полезна для прослушивания речи.
А еще можно удалить голос из песни и получить простой минус.
Настройка звука
Прежде чем работать с эквалайзером и эффектами, изучите настройки.
Выполните следующие шаги:
1. Откройте главное меню.
2. Перейдите во вкладку «Настройки».
3. Откройте «Воспроизведение».
4. Раскройте список устройств и выберите лучшее из доступных.
5. Установите максимальные параметры (192000 герц, 32 бит (Float) и стерео).
6. Установите размер кэша — не слишком высокий, чтобы не перегружать оперативную память, но и не низкую, чтобы не потерять скорость обработки звука, и избежать пауз в воспроизведении. При желании выберите логарифмический или тонкокомпенсирующий регулятор (сохраняют звучание одинаковым при любой громкости). По умолчанию установлено «Плавное изменение». Вы также можете включить функцию предварительной загрузки, но помните, что это чревато издержками производительности.
7. Откройте «Менеджер эффектов».
8. Перейдите в третью вкладку слева и включите нормализацию по амплитуде и Replay Gain. Это позволит трекам с различной громкостью звучать одинаково. Поэкспериментируйте с настройками целевого уровня, верхнего и нижнего порогов — эти показатели зависят от субъективного восприятия. Можно включить анализ файла в реальном времени («на лету»), использовать значения из тегов, вводимых пользователем самостоятельно.
9. Откройте вторую вкладку и поэкспериментируйте с эквалайзером, установив галочку. Конечно, можно воспользоваться преднастройками, но гораздо интереснее (и эффективнее) подобрать частоты самостоятельно. Сбрасывается результат кнопкой «По умолчанию».
10. Изучите вкладку «Звуковые эффекты» — они не сильно повлияют на качество звука, но результат может быть довольно интересным. Чтобы вернуть бегунки в исходное положение, щелкните по ним правой кнопкой мыши.
Нашли идеальные пропорции и боитесь их потерять? AIMP Player предусмотрел и это: проигрыватель работает в многопользовательском режиме, чтобы у каждого из домашних был собственный набор. Устанавливайте, настраивайте, развлекайтесь и работайте в удовольствие — именно так, как вам нравится.
«Настоящий» ASIO в тестах не участвовал, т.к. этот метод вывода тесно связан со звуковой картой. Результаты тестов будут зависеть от параметров звуковой карты и будут выбиваться из общей картины.
Конфигурация
- Подопытный плеер: Foobar v1.1.11
Он умеет выводить звук через все интересующие нас методы - ОС: Windows XP Pro SP3 Rus x86 / Windows 7 Ultimate SP1 Rus x86
Windows XP добавлена к тестированию поскольку: KernelStreaming не работает на современных версиях ОС; Реализация DirectSound начиная с Windows Vista претерпела серьезные изменения - Звуковая карта: Virtual Audio Streaming
Виртуальная звуковая карта позволяет исключить особенности железа и реализации драйверов к нему. В добавок к этому, нам будет проще списать с нее выходные данные - Настройки плеера и ОС: 44.1 кГц, 16 Бит/сэмпл, громкость 100%, эквалайзер и другие эффекты выключены
Методика тестирования
Для замеров я использовал RightMark Audio Analyzer (RMAA). В ней сгенерировал тестовый WAV-файл, со следующими характеристиками: 44.1 кГц, 16 Бит/сэмпл. Далее, воспроизводил этот файл в плеере, выбирая различные методы вывода звука, записывал выходной сигнал напрямую в файл и анализировал с помощью той же RMAA.
2.1 Объект и интерфейс
- Объект: предоставляет абстракцию набора ресурсов и состояний, таких как объекты записывающего устройства и объекты проигрывателя.
- Интерфейс: объект предоставляет абстракцию конкретного метода функции, такого как интерфейс воспроизведения объекта проигрывателя.
То есть каждый объект предоставляет некоторые из самых основных операций: Realize, Resume, GetState, Destroy и т. Д., Но объект нельзя использовать напрямую, и указанный интерфейс (например, интерфейс воспроизведения проигрывателя) должен быть получен через его функцию GetInterface с идентификационным номером. ), а затем получить доступ к функции функции через интерфейс.
Все объекты должны быть инициализированы вызовом Realize после создания, а Destroy должен быть вызван для уничтожения при освобождении.
1.1 Введение в использование и API
В качестве примера возьмем api на стороне java (собственный уровень в основном такой же), метод использования аудиодорожки следующий:
1. Создайте:
Описание параметра:
1) int streamType: укажите тип воспроизводимого звука. Для разных типов аудиосистема Android будет обрабатывать по-разному (например, разные уровни громкости, разные регуляторы громкости и т. д.). Вот некоторые общие типы. , Для музыкальных файлов мы используем STREAM_MUSIC
AudioTrack имеет два режима загрузки данных (MODE_STREAM и MODE_STATIC), соответствующие режиму загрузки данных и типу аудиопотока, соответствующие двум совершенно различным сценариям использования.
6) int mode: режим загрузки данных (MODE_STREAM и MODE_STATIC), два режима соответствуют двум различным сценариям использования
- MODE_STREAM: в этом режиме аудиоданные записываются в AudioTrack посредством записи снова и снова. Обычно это похоже на запись данных в файл с помощью системного вызова write, но при таком способе работы необходимо каждый раз копировать данные из буфера, предоставленного пользователем, в буфер внутри AudioTrack, что в определенной степени приводит к задержке. Чтобы решить эту проблему, AudioTrack представил второй режим.
- MODE_STATIC: в этом режиме вам нужно только передать все данные во внутренний буфер в AudioTrack через вызов записи перед воспроизведением, и вам не нужно передавать данные в последующем. Этот режим подходит для файлов с небольшим объемом памяти и требованиями к высокой задержке, например для мелодий звонка. Но у него также есть недостаток, то есть вы не можете записать слишком много данных за один раз, иначе система не сможет выделить достаточно памяти для хранения всех данных.
3. Внедрение данных:
Параметры относительно простые, данные, смещение, размер
6. Получить статус:
STATE_INITIALIZED и STATE_UNINITIALIZED объяснять не нужно. STATE_NO_STATIC_DATA - это промежуточное состояние. При использовании режима MODE_STATIC при создании AudioTrack он сначала войдет в измененное состояние, а после записи данных станет состоянием STATE_INITIALIZED. Если вы перейдете к воспроизведению в состоянии, отличном от STATE_INITIALIZED, будет выдано исключение, поэтому невозможно играть в режиме MODE_STATIC без записи.
Резюме
Что же мы имеем? А имеем мы вот что: три побитово точных метода вывода звука: DirectSound в (Windows XP), WASAPI Exclusive, Kernel Streaming (последний поддерживается считанными Плеерами). Кроме этого мы имеем ASIO (тот, который настоящий, не ASIO4ALL), который мне протестировать не удалось, да и поддерживается он ограниченным количеством устройств. И ещё мы имеем два метода вывода, которые вносят небольшие искажения в исходный сигнал: DirectSound Windows 7 и WASAPI Shared. Но, подчёркиваю, искажения эти настолько незначительны, что на слух их распознать можно лишь имея отнюдь недешевое оборудование.
Какой же метод вывода включить в Плеере?
- Windows XP : однозначно DirectSound — отлично работает, не вносит искажений
- Windows 7 : тут не всё однозначно. Для получения супер-качественного звука можно использовать WASAPI Exclusive или ASIO (при наличии поддержки). Но эти методы блокируют другие звуки в системе, что не всегда удобно. Гораздо удобнее использовать WASAPI или DirectSound.
Kernel Streaming советовать не буду. Пусть этот метод и крут, но его поддержку я встречал лишь у Foobar2000 на уровне «test», и этот метод не работает на ОС начиная с Vista.
Что касается ASIO4ALL : в Windows 7 мы действительно получим небольшое улучшение качества звука (если сравнивать с WASAPI или DirectSound), а вот в Windows XP выгода от использования минимальна: при отсутствии посторонних звуков, идущих на микшер, и 100% системной громкости — местный DirectSound выдает побитово точный звук.
Спасибо за внимание. Надеюсь кому-то данные исследования будут полезны.
Запись опубликована 28 марта 2012 автором Soolo в рубрике Тесты с метками ASIO, DirectSound, WASAPI, тесты.
1 Введение в AudioTrack
AudioTrack - это класс для управления и воспроизведения одного звукового ресурса в системе Android. Android предоставляет API-интерфейсы для уровня Java и собственного уровня. Он также относительно прост в использовании. Как правило, я рекомендую использовать этот компонент для воспроизведения.
Но следует отметить, что он может воспроизводить только декодированные данные PCM.
2.2 Метод воспроизведения звука OpenSL ES
Сцена воспроизведения звука:
Объясните метод воспроизведения из графа сцены:
1. Создайте движок OpenSL,
2. Создайте AudioPlayer и outputMix через движок
3. Укажите вход AudioPlayer как DataSource и выход как outputMix. OutputMix - это выход по умолчанию, связанный с устройством.
4. Начните играть.
Ниже подробно объясняется каждая часть
2.2.1 Engine
Основной объект OpenSL ES, в основном, обеспечивает следующие две функции:
(1) Управляйте жизненным циклом Audio Engine.
(2) Предоставьте интерфейс управления: SLEngineItf, который можно использовать для создания всех других объектов.
Шаги по использованию:
1. Создайте движок
- pEngine: указатель на объект механизма вывода. numOptions: размер необязательного массива конфигурации.
- pEngineOptions: Необязательный массив конфигурации. numInterfaces: количество интерфейсов, поддерживаемых объектом, за исключением неявных интерфейсов.
- pInterfaceId: массив идентификаторов интерфейсов, которые объект должен поддерживать.
- pInterfaceRequired: массив битов флагов, указывающий, является ли каждый требуемый интерфейс необязательным или обязательным. Если требуемый интерфейс не реализован, создание объекта завершится неудачно, и будет возвращен код ошибки SL_RESULT_FEATURE_UNSUPPORTED.
2. После создания движка его можно проходить SL_IID_ENGINE Получите интерфейс управления:
3. Затем через интерфейс управления iengine вы можете продолжить создание других необходимых объектов.
2.2.2 AudioPlayer
Объект воспроизведения аудио, в нем необходимо указать вход (DataSource) и выход (DataSink)
Datasource представляет информацию об источнике ввода, то есть о том, откуда берутся данные и каковы параметры входных данных;
DataSink представляет выходную информацию, то есть, где данные выводятся и какие параметры выводятся.
- Определение DataSource выглядит следующим образом:
- Определение DataSink следующее:
- SLDataLocator_Address
- SLDataLocator_BufferQueue
- SLDataLocator_IODevice
- SLDataLocator_MIDIBufferQueue
- SLDataLocator_URI
Затем нам нужно создать ввод и вывод перед созданием объекта AudioPlayer.Мы используем буферную очередь для ввода и используем outputMix для вывода на звуковое устройство по умолчанию для вывода.
Шаги по использованию:
1. Источник ввода
2. Источник вывода
объект outputMix должен передать CreateOutputMix Интерфейс создан и называется Realize инициализация
3. Создайте AudioPlayer и инициализируйте
Объект AudioPlayer должен передать CreateAudioPlayer Интерфейс создан и называется Realize инициализация
4. Установите функцию обратного вызова входной очереди.Функция обратного вызова будет вызываться изнутри, когда данных недостаточно. Тогда начни играть.
необходимо пройти SL_IID_ANDROIDSIMPLEBUFFERQUEUE Получите интерфейс очереди и RegisterCallback Установите функцию обратного вызова.
необходимо пройти SL_IID_PLAY Получите интерфейс воспроизведения, установите его в состояние воспроизведения и вызовите Enqueue Поместите в очередь фрейм с пустыми данными.
Следует отметить, что данные в очереди не воспроизводятся немедленно, поэтому эти данные не могут быть немедленно освобождены, иначе это приведет к потере кадров.
2 Введение в OpenSL ES
OpenSL ES (открытая звуковая библиотека для встроенных систем, библиотека встроенных звуков с открытым исходным кодом) - это не требующая лицензии кроссплатформенная аудио библиотека с аппаратным ускорением на языке C для встроенных систем. Проще говоря, он предоставляет некоторые стандартизированные API, позволяющие разработчикам управлять аудиоустройствами на различных аппаратных платформах. Включая воспроизведение, запись и тд.
Хотя это голос C, в нем используется объектно-ориентированный подход. При разработке мы используем объекты и интерфейсы для разработки.
2.1. AudioTrack Java API
AudioTrack Java API имеет два режима передачи данных:
Transfer Mode | Description |
---|---|
MODE_STATIC | Процесс приложения передает данные воспроизведения в AudioTrack за один раз, что подходит для сценариев с небольшим объемом данных и требованиями к высокой задержке. |
MODE_STREAM | Пользовательский процесс должен постоянно вызывать write () для записи данных в FIFO, и он может быть заблокирован при записи данных. (Ожидание, пока AudioFlinger :: PlaybackThread потребляет предыдущие данные), в основном применимо ко всем аудио сценариям |
Тип аудиопотока AudioTrack Java API:
Stream Type | Description |
---|---|
STREAM_VOICE_CALL | Телефонный голос |
STREAM_SYSTEM | Системный звук |
STREAM_RING | Мелодии звонков, например мелодии звонков, мелодии будильника и т. Д. |
STREAM_MUSIC | Музыкальный звук |
STREAM_ALARM | Предупреждающий сигнал |
STREAM_NOTIFICATION | Тон уведомления |
STREAM_DTMF | DTMF тон (тональный сигнал клавиатуры набора номера) |
Почему Android определяет так много типов потоков? Это связано со стратегией управления звуком Android, например:
① Управление громкостью аудиопотока, регулировка громкости одного типа аудиопотока без влияния на другие типы аудиопотоков
② Выберите соответствующее устройство вывода в соответствии с типом потока: Например, когда подключена проводная гарнитура, музыкальный звук (STREAM_MUSIC) будет выводиться только на проводную гарнитуру, а рингтон (STREAM_RING) будет выводиться на проводную гарнитуру и внешний усилитель одновременно.
Это содержимое AudioPolicyService. Разработчики приложений должны выбрать соответствующий тип потока в соответствии со сценарием приложения, чтобы система могла выбрать подходящее устройство вывода для этого потока.
Тестовый пример AudioTrack Java API (режим MODE_STREAM):
Подробное описание интерфейса getMinBufferSize (): буквально означает возвращение размера наименьшего буфера данных, что является минимальной гарантией нормального воспроизведения звука. Возвращаемое значение зависит от параметров функции от частоты дискретизации, глубины дискретизации и количества каналов. Атрибуты.
В режиме MODE_STREAM прикладная программа в основном обращается к своему возвращаемому значению, а затем определяет, сколько буфера данных выделить.
Если буфер данных выделен слишком маленьким, воспроизводимый звук часто будет испытывать опустошение.
underrun означает, что данные, предоставленные производителем (AudioTrack), не успевают за данными, потребляемыми потребителем (AudioFlinger :: PlaybackThread).
Реальный результат - прерывистая звуковая задержка, которая серьезно влияет на качество прослушивания.
Ниже приводится реализация кода getMinBufferSize ():
Видимый минимальный размер буфера = минимальное количество кадров * количество каналов * глубина выборки (глубина выборки в байтах)
К настоящему моменту у всех должно быть четкое понимание. Если количество кадров в видео слишком мало, изображение будет зависать. То же самое и со звуком. Как найти минимальное количество кадров, мы объясним нативному слою.
Тест1: В поисках побитово точного вывода
Первым делом решил протестировать так называемые «побитово точные» методы вывода — WASAPI Exclusive, Kernel Streaming и ASIO (посредством ASIO4ALL). Ходят мнения, поскольку эти методы обходят микшер Windows, то дают наиболее качественный, чуть ли не идеальный звук. Проверим!
Выходной поток будем сравнивать с входным с помощью RMAA, а так же побитово с помощью утилитки сравнения файлов. Поехали!
Нелинейные искажения + шум (при уровне -3 дБ)
Параметры одинаковые, графики совпали. Вроде можно говорить о побитово точном выводе. Но сравнивая входной и выходной файлы с помощью специальной утилитки — наткнулся на странный факт: для ASIO4ALL файлы абсолютно разные, хотя для WASAPI Exclusive и Kernel Streaming полное совпадение.
Причина оказалась в нелинейной фазочастотной характеристике (ФЧХ), а так же в присутствии фазовых задержек:
ASIO4ALL Фазовая задержка
Выводы
WASAPI Exclusive и Kernel Streaming действительно дают побитово точный вывод звука, а вот при использовании ASIO4ALL, формально, ни о каком побитовом выводе речи быть не может. Да, системный микшер ASIO4ALL обходит, но вносит в сигнал собственные искажения в виде нелинейной ФЧХ и фазовых задержек. С другой стороны — фазовые искажения (если они одинаковы во всех каналах) никак не воспринимаются на слух.
1.2 Пример использования AudioTrack
пример стороны Java
2. Обзор API AudioTrack
Для воспроизведения звуков вы можете использовать MediaPlayer и AudioTrack, оба из которых предоставляют API-интерфейсы Java для разработчиков приложений. Разница между ними:
MediaPlayer может воспроизводить аудиоисточники в нескольких форматах, таких как mp3, flac, wma, ogg, wav и т. д.
И AudioTrack может воспроизводить только декодированный поток данных PCM.
Из приведенной выше схемы архитектуры аудиосистемы Android:
MediaPlayer создаст соответствующий аудиодекодер и AudioTrack на собственном уровне, а декодированные данные будут выводиться AudioTrack.
Таким образом, MediaPlayer имеет более широкий диапазон сценариев приложений, и его, как правило, более удобно использовать; AudioTrack требуется только для некоторых сценариев приложений, которые требуют очень требовательной задержки звука.
Общие возможности AIMP Player
Одна из отличительных черт проигрывателя — это полностью настраиваемый интерфейс, для которого пользователи создают собственные темы при помощи встроенного инструмента Skin Engine.
Можно задать собственные изображения, анимацию, добавить различные элементы управления и многое другое.
На самом деле персонализация чувствуется во всем функционале:
1. AIMP Player предлагает различные переходы между треками (с затуханием, наложением или паузой) и настройки времени для них.
2. Позволяет задавать локальные и глобальные горячие клавиши для быстрого управления проигрывателем.
3. Предлагает таймер сна и будильник с гибкими настройками времени и громкости, выбором трека.
4. Составляет смарт-плейлисты: автоматические подборки на основе предпочтений слушателя.
Неважно, как часто и для чего вы используете AIMP Player, программа действительно радует индивидуальным подходом к вашим предпочтениям как в функционале, так и во внешнем виде. А высокое качество звука, также легко настраиваемого под вас, сразу выделяет его среди альтернативных проигрывателей и онлайн-сервисов.
Тестирование методов вывода звука : 14 комментариев
А Windows Default это что?
Это вообще не метод вывода, а устройство (наушники или динамики — то, которое вы назначили по умолчанию для вывода звука)
Windows Default — устройство по умолчанию, согласно настройкам ОС. В AIMP-е, для каждого из методов вывода звука (за исключением ASIO), есть свой «Windows Default»
Ну у меня есть выбор или Realtek Hd или DirectSound: Windows Default вот так 🙂 а еще в другом плеере есть DirectSound8 audio slink или это одно и тоже Direct ? 🙂
Покажите лучше скриншоты
А чем можно сделать скриншоты?
Считаю необходимым сделать в AIMP вывод через WSAPI Exclusive. Сейчас для прослушивания lossless использую foobar2000, но один плеер лучше, чем два. Кстати, буду благодарен на ссылку с описанием тракта AIMP3, если таковая информация имеется.
Попробовал в наушниках послушать FLAC через WSAPI Shared — звук отчётливо чище, особено высокие частоты, но загрузка процессора при этом на уровне 33%, причём 3-е из трёх ядер загружено «в потолок», через DirectSound нагрузка CPU 1-2%. WSAPI Exclusive — к сожалению протестировать не удалось, AIMP виснет, видимо дрова моего SB Audigy для 7-ки не тянут.
Direct Sound однозначно 🙂
Неплохая статья, которая развенчивает многие мифы по поводу суперкачества ASIO
AIMP for Android
версия: v3.22, build 1193 (26.04.2022)
Последнее обновление программы в шапке: 28.04.2022
Краткое описание:
AIMP для Андроид - это легкая мобильная версия аудиоплеера для платформы Android
Полное описание
+ Поддерживаемые форматы: AAC, APE, DFF, DSF, FLAC, IT, M4A, M4B, MO3, MOD, MP2, MP3, MP4, MPC, MPGA, MTM, OGG, OPUS, S3M, TTA, UMX, WAV, WEBM, WV, XM
+ Поддержка OpenSL / AudioTrack / AAudio механизмов вывода звука
+ Поддержка Android Auto и автомобильных магнитол
+ Поддержка CUE
+ Регулятор баланса
+ Регулятор скорости воспроизведения
+ Нормализация громкости по амплитуде / replay gain
+ 29-ти полосный графический эквалайзер
+ Таймер сна
+ Темы: светлая, темная и черная версии интерфейса
+ Темы: поддержка пользовательских тем
+ Темы: поддержка ночного / дневного режимов
+ Темы: возможность смены оттенка темы
+ Возможность плавного перехода между треками
+ Возможность сведения многоканальных аудиосигналов в стерео
+ Возможность принудительного сведения в моно (опционально)
+ Возможность отката на 5 секунд после долгой паузы (опционально)
+ Возможность повтора плейлиста / повтора трека / проигрывания плейлиста без повтора
+ Последовательное проигрывание треков / проигрывание в случайном порядке
+ Настройки поведения при смене аудиофокуса
+ Переключение треков кнопками громкости (опционально)
+ Управление воспроизведением жестами в области с обложкой альбома (опционально)
+ Управление из области уведомлений
+ Управление с гарнитуры
+ Возможность сортировки файлов в плейлисте по шаблону / вручную
+ Возможность группировки файлов в плейлисте по шаблону
+ Возможность поиска по плейлисту в режиме фильтрации
+ Возможность физического удаления файла
+ Возможность поделиться аудио файлом
+ Выборочное добавления файлов / папок в плейлисты
+ Воспроизведение музыки из файловых менеджеров
+ Воспроизведение музыки из общих папок Windows (поддерживаются только v1 / v2 протокола Samba)
+ Интеграция с экраном блокировки
+ Виджет для рабочего стола
+ Виджет для экрана блокировки
Beta-версии:
Версия: v3.20 Beta 2, build 1137 (10.07.2021) Официальное обновление
Внимание! v3.20 не поддерживает Android 4.4!
Внимание! v3.00 не поддерживает Android 4.0 - 4.3!
Внимание! v2.60 не поддерживает armv6!
Внимание! v2.00 не поддерживает Android 2.3!
Прошлые версии:
Версия: v3.20 Beta 2, build 1135 (29.06.2021) Официальное обновление
Версия: v3.20 Beta 2, build 1134 (21.06.2021) Официальное обновление
Версия: v3.20 Beta 2, build 1131 (04.06.2021) Официальное обновление
Версия: v3.20 Beta, build 1128 (18.05.2021) Официальное обновление
Версия: v3.20 Beta, build 1126 (11.05.2021) Обновление (dhwh)
Версия: v3.10, build 1051 (23.05.2021) Официальный релиз
Версия: v3.10, build 1050 (19.05.2021) Официальный релиз
Версия: v3.10, build 1050 (19.05.2021) (4 variants) от Google Play Market (vladmira)
Версия: v3.10, build 1047 (30.03.2021) (4 variants) от Google Play Market (gorand39)
Версия: v3.10, build 1036 (09.02.2021) Google Play от 08/02/2021 (vladmira)
Версия: v3.10, build 1034 (01.02.2021) универсальная версия (ArtemIzmaylov)
Версия: v3.10, build 1030 (19.12.2020) универсальная версия (ArtemIzmaylov)
Версия: v3.10, build 1030 (19.12.2020) (4 variants) от Google Play Market (gorand39)
версия: v3.10, build 1025 RC2 (29.11.2020) универсальная версия (ArtemIzmaylov)
версия: v3.10, build 1024 RC 1(16.11.2020) универсальная версия (ArtemIzmaylov)
версия: v3.10, build 1021 Beta 4 (02.11.2020) универсальная версия (ArtemIzmaylov)
версия: v3.10, build 1019 Beta 3 (12.10.2020) универсальная версия (ArtemIzmaylov)
версия: v3.10, build 1017 Beta 2 (17.09.2020) универсальная версия (ArtemIzmaylov)
Причина редактирования: Обновление: новая версия v3.22, build 1193 (26.04.2022) официальное обновление
Читайте также: