|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
Как быстро получить максимальный уровень громкости MP3 файла12.09.2017, 14:11. Показов 2806. Ответов 8
Метки нет (Все метки)
Друзья, подскажите пожалуйста, как быстро узнать максимальный уровень громкости MP3 файла?
Мне это нужно для реализации функции ReplayGain-а в плеере. Сейчас для получения уровня использую программу mp3gain. Но при длине файла в 4-5 минут, программа mp3gain возвращает результат в течение 8-10 секунд, что не совсем хорошо. Устроило бы время в 1-2 секунды, тогда изменения уровня были бы незаметны на фоне кроссфейда. Пробовал использовать функцию BASS_ChannelGetLevel библиотеки BASS.dll, но она работает тоже медленно.
0
|
|
| 12.09.2017, 14:11 | |
|
Ответы с готовыми решениями:
8
Как получить уровень громкости звука? Как получить уровень громкости на Android Gstreamer, как получить уровень/пик громкости? |
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 12.09.2017, 21:27 | |
|
Ну что тут сказать?
Либо разбираться в формате mp3 и читать файл самому (почему-то мне кажется, что в каждом фрейме записана громкость... mp3DirectCut, например, очень быстро находит пики для каждого фрейма). Либо искать в других библиотеках типа FMOD, Audiere. Или тут: http://www.rarewares.org/mp3-lame-libraries.php Если разберётесь, напишите, интересно. Да, и если документацию по использованию lame_enc.dll найдёте - тоже поделитесь ![]() Добавлено через 1 минуту Можно ещё компоненты какие-то поискать для Delphi, например. И в них посмотреть. Добавлено через 21 минуту В заголовках mp3, по ходу, информации нет...
1
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 12.09.2017, 21:31 [ТС] | |
|
Спасибо!
lame тоже иногда использую для кодирования(но чаще FFMPEG). Информацию по lame брал отсюда.
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
||
| 12.09.2017, 21:39 | ||
|
Нашёл кое-что.
Есть библиотека libsndfile-1.dll (скачать её можно отсюда: http://www.mega-nerd.com/libsndfile) Там же описание API: http://www.mega-nerd.com/libsndfile/api.html Есть функция sf_command, которая имеет несколько команд, похожих по названию на то, что вам нужно. Возможно, ещё что-то есть (какие-то функции), я не знаю. Добавлено через 1 минуту
1
|
||
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
||||
| 12.09.2017, 21:47 [ТС] | ||||
|
Добавлено через 4 минуты Я использовал lame.exe, это ведь обёртка для lame_enc.dll ?
Jin X, спасибо, буду разбираться.
0
|
||||
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 13.09.2017, 10:14 [ТС] | |
|
0
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 21.12.2017, 07:15 [ТС] | |
|
Вышел из положения так:
Создаём поток функцией BASS_StreamCreateFile Определяем длину файла в байтах функцией BASS_ChannelGetLength Переводим длину в секунды функцией BASS_ChannelBytes2Seconds "Разбиваем" файл на 500 частей (делим длину на 500), можно менять по желанию, в зависимости от необходимого соотношения скорость\качество. В цикле "скачем" по этим точкам функцией BASS_ChannelSetPosition Измеряем в этих точках уровень функцией BASS_ChannelGetLevel Уровень на каждом из каналов получаем функциями GetHiWord и GetLoWord Определяем максимум уровня. Освобождаем поток BASS_StreamFree. Переводим максимальное значение уровня в децибелы. Всё ![]() Таким образом, файл сканируется не целиком, а по точкам. При этом быстродействие очень высокое, независимо от длины файла(в отличие от mp3gain), так как количество точек фиксировано. Как показала практика, точность измерений достаточна, я сравнивал с результатами того же mp3gain (у него погрешность +\-1.5 дБ), и, мне кажется, даже выше последнего. Мой метод измерений может показаться "костылём", но меня устраивает, и вполне работоспособен.
1
|
|
| 21.12.2017, 07:15 | |
|
Помогаю со студенческими работами здесь
9
Получить текущий уровень громкости Bass.dll получить уровень громкости Какая прога может пакетно вычислить средний уровень громкости звука и поднять на заданный уровень? Как узнать уровень громкости Windows 7 ? Как вывести уровень громкости в ProgressBar Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|