Библиотека Android для генерации волновых форм из аудиофайла

В настоящее время я разрабатываю приложение для Android, и мне нужно иметь возможность отображать форму волны аудиофайла. Я уже читал о классе Visualizer, но думаю, что этот класс предназначен для вычислений в реальном времени. Что я хочу сделать, так это просмотреть аудиофайл и создать, например, .PNG, который содержит форму волны всего аудиофайла.

В основном что-то вроде soundcloud: http://www.djban.com.br/wp-content/uploads/soundcloud-waveform.png

Есть ли библиотеки, которые могут это сделать? Или вы можете сказать мне, как я могу получить массив амплитуд аудиофайла?


person Heisenbug    schedule 08.04.2013    source источник
comment
эй @heisenbug, если тебе удалось заставить это работать, покажи несколько указателей.   -  person amalBit    schedule 21.07.2014


Ответы (1)


Я не знаю ни одной библиотеки, но заставить ее работать легко.

Во-первых, чтобы получить амплитуду формы волны, вам понадобится звук в PCM формат. Предполагая, что вам нужна форма сигнала для произвольных аудиофайлов (в частности, mp3), вам нужно будет найти способ преобразования между форматами. Быстрый поиск в Google дает этот результат. ПРИМЕЧАНИЕ: если вам просто нужно сделать это для звука, поступающего с микрофона, вы можете не преобразовывать, поскольку он передает аудиоданные в формате PCM.

После получения образцов вам нужно будет как-то нарисовать их амплитуды. У вас есть несколько вариантов, но я бы попробовал Canvas. Вы можете рисовать линии (или общие фигуры), а затем экспортировать их в файл или рисовать. на экране.

Другой вариант рисования — OpenGL. Это сложнее, если вы не использовали его раньше, но, вероятно, это будет быстрее.

person Esparver    schedule 08.04.2013
comment
Спасибо за быстрый ответ, но можете ли вы объяснить, почему мне нужно преобразовать файл в формат PCM? Каковы преимущества? Могу ли я просто получить образцы в любом другом формате, который может открыть Android? Процесс рисования не проблема, я знаком с Android. Это то, как я могу читать образцы аудиофайла и как я могу получить амплитуду этих образцов. Спасибо что нашли время ответить! - person Heisenbug; 08.04.2013
comment
В мп3 файле нет информации об амплитуде (по крайней мере напрямую). Вот почему вам нужно преобразовать его в PCM или аналогичный формат (например, несжатый WAV). Android MediaPlayer может воспроизводить mp3-файлы, но не дает информации об амплитуде. Сам не пробовал, но в посте про mp3plugin вроде все просто. Сконвертированный файл сохранять не нужно, просто немного поиграйтесь с буферами. - person Esparver; 08.04.2013