Проигрывание http потоков, рассинхронизация.

Список разделов foobar2000 Есть вопрос!

Описание: У вас проблемы с foobar2000 и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть. Подробно описывайте проблему. Не забывайте указать версию плеера, название сборки, по возможности добавить скриншоты проблемы.

Сообщение #1 fb422 » 11.08.2021, 21:42

Замечена проблема до версии 1.6.6, сейчас поставил 1.6.7, но в ней она тоже вряд ли решена.
Есть внешний http звуковой поток (через icecast проксируется в локальный), который по независящим причинам прерывается. Параллельно этот же поток воспроизводят ffmpeg и аппаратный декодер DB91-RX. После прерывания ffmpeg и DB91-RX воспроизводят поток по фактическому значению, а foobar сдвигает поток относительно времени прерывания и появляется значительная рассинхронизация на выходе относительно основного потока. Нажимаешь мышкой на строке в плеере-сдвижка уходит, но появляется после последующих прерываний.

Device Output используется ASIO (2.1.2), buffer lengh -1000 мс.

Кто нибудь сталкивался с подобным?
fb422
Автор темы
Репутация: 0
С нами: 3 года 4 месяца

Сообщение #2 VEG » 12.08.2021, 13:13

Думаю, так и было задумано автором. Если пакеты иногда приходят с задержкой, имеет смысл их накапливать, и воспроизводить звук тоже с задержкой, чтобы звук потом не прерывался.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 279
С нами: 12 лет 7 месяцев

Сообщение #3 fb422 » 12.08.2021, 19:57

Пакеты не приходят с задержкой, они пропадают на некоторое время. DB91-RX правильно делает, как появился поток он его сразу сбрасывает и начинает воспроизводить с момента подключения, т.е. делает новый reconnect. Поставил для эксперимента Keep reconnect dropped 3 сек вместо 10, чтобы он принудительно запускал следующий объект в плей-листе, тем самым не накапливал буфер. Почти сутки (22:40) на версии 1.6.7, в консоли сообщений нет о переподключении. Не исключено что и сам foobar имеет некий буфер, который при переполнении приводит к пропаданию звука. Хотя параллельно работающий ffmpeg c silencedetect фиксирует тишину порядка 3-5 сек.

Код: Выделить всё
[silencedetect @ 000000000037fa40] silence_start: 967.075
[silencedetect @ 000000000037fa40] silence_end: 971.145 | silence_duration: 4.07025
fb422
Автор темы
Репутация: 0
С нами: 3 года 4 месяца


Вернуться в Есть вопрос!