LINUX.ORG.RU

libvlc. volume meter (индикатор уровня)

 


0

1

Мастерим приложение с участием libvlc.
Требуется показать volume meter.
Возможно есть способы получения готового уровня для volume meter, но найти их не удалось.
Вероятно, уровень для volume meter нужно вычислять по аудиобуферу. Но для начала этот буфер нужно получить.
Один из найденных способов - установить callback libvlc_audio_set_callbacks(player, AudioPlayerCallback, NULL, ...).
Но тогда звук придется проигрывать самостоятельно, т.к. vlc звук больше не воспроизводит. Отпадает.
Второй способ - использовать smem с дублированием потока.
#duplicate{dst=display,dst="transcode{acodec=s16l}:smem{audio-postrender-callback=%lld,audio-prerender-callback=%lld,video-postrender-callback=%lld,video-prerender-callback=%lld,audio-data=%lld,video-data=%lld}"}
Прекрасно, буфер получили, средний уровень посчитали, показали. Работает.
Но есть пара неприятных моментов.
Отклик на нажатие кнопок «Pause» и «Play» около секунды. Это неприемлемо.
На некоторых роликах после нажатия паузы продолжает циклически воспроизводиться закэшированый звук.
Тупик.

Вероятно, мы что-то пропустили.
Есть ли другие способы получить аудиобуфер, а лучше готовые уровни для volume meter?


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.