AIMP Forum

AIMP for Android => Вопросы / Questions => Topic started by: akaplne on February 02, 2018, 09:04:34

Title: Размер буфера
Post by: akaplne on February 02, 2018, 09:04:34
Всем добра!
При прослушивании интернет-радиостанций в движении в одних и тех же местах постоянно происходят обрывы трансляций. Понятно, что из-за проблем с мобильным интернетом в этих "ямах". Нельзя ли как-нибудь увеличить размер буфера подкачки для устранения обрывов при слабом интернете? Может, можно как-нибудь это включить в настройки, чтобы можно было "играться" с размером?
Title: Re: Размер буфера
Post by: Soolo on February 02, 2018, 09:37:34
Насколько длительные провалы связи?

Чтобы работал большой буфер - нужно делать большую задержку от нажатия "плей" до старта радиостанции.
И эта задержка должна быть больше, чем обрыв связи.
Title: Re: Размер буфера
Post by: akaplne on February 02, 2018, 14:49:27
Да когда как, зависит от скорости перемещения) секунд на 5-10 в среднем. По ощущениям - раза в два если буфер увеличить, было бы достаточно. Потому что на 4-5 провал плеер вообще замолкает - приходится руками на стоп/плей нажимать для перезапуска вещания.
Я потому и спрашиваю о возможности настраивать размер буферизации, потому что каждый под себя сможет отконфигурировать. У меня, пока на одном месте нахожусь, вообще обрывов не бывает, мобильного интернета хватает.
Title: Re: Размер буфера
Post by: prikol on February 17, 2018, 13:18:00
согласен с автором, если бы была регулировка, было бы хорошо, у меня тоже обрывы бывают(
Title: Re: Размер буфера
Post by: Я Гриша! on February 17, 2018, 15:04:24
согласен с автором, если бы была регулировка, было бы хорошо, у меня тоже обрывы бывают(
Тут нужен принципиально другой алгоритм передачи потока, между сервером и плеером.
Нужно чтобы сервера передавали поток мелкими пакетами, скажем по 1-2 секунде.
При старте вещания, выдача 1-го пакета должна начинаться когда уже их накопилось, скажем, 5.
При подключения плеера к серверу, плеер получает доступ сразу к 5 последнем пакетам, и проигрывает их. Если в это время отключится интернет, то на проигрывание это не повлеяет, т.к. плеер продолжает проигрывать имеющиеся пакеты. А при появлении сети, начнёт последовательно загружать новые пакеты.
Пакеты соответственно пронумерованы, скажем от 0 до 99, этого будет более чем достаточно.

Вот если кто из разработчиков займётся разработкой этого протокола, или как это правильно называется? И займётся его продвижением на Хабре и других сайтах,  это будет здорово.
А может подобные уже есть, а я не в курсе?
Title: Re: Размер буфера
Post by: Alex Kalaverin on February 23, 2018, 03:52:17
В десктопном реализовано очень удобно. Там буфер адаптивный, кстати, раз задаётся в секундах, а не байтах? То есть вне зависимости битрейта, семплрейта и размера семпла всегда именно столько миллисекунд хранит? (сделайте, пожалуйста, возможность задавать его ещё меньше, ну очень надо, через wget пайплайнить стримы для тестирования совсем неудобняк).

Нужно чтобы сервера передавали поток мелкими пакетами, скажем по 1-2 секунде.
Не нужно, потому что веб-серверы не работают с секундами. Они работают с байтами. А ICY (который по сути вообще HTTP/0.9) банально отдаёт заголовки ответа и начинает сразу отдавать фреймы с данными, с конкретной скоростью, со скоростью живой трансляции ли, со скоростью с которой успевает их читать клиент, со скоростью заданной в настройках, и так далее. Но не в секундах. В килобитах в секунду.

Есть queue size (буфер сервера), есть burst size (сколько данных нужно отдать клиенту изначально, как раз чтобы заполнить буфер, удобно, но на столько же данных, разумеется растёт лаг), есть буфер приложения / клиента / что угодно. Чем больше queue_size + burst_size — тем выше лаг, чем больше первый, тем больше проблем типа потерянных пакетов сможет клиент пропустить не заметив опустошения буфера, чем выше второй — тем быстрее заполнится буфер клиента.

Соответственно, на клиенте — буфер либо задаётся жёстко (например 80000 байт, это 5 секунд данных с битрейтом 128 килобит/сек), либо сложно и адаптивно изменяется. Для плеера нет никакой необходимости городить сложные решения с адаптивными буферами, тем более для настолько деревянных наколенных протоколов как ICY. Но ничего принципиального изобретать не нужно и кардинально всё менять.

В общем, мне было бы очень удобно, если бы можно было бы подкручивать размер буфера и в мобильном AIMP тоже. И было бы совсем круто, если бы его можно было бы задавать не в секундах, а в более привычных байтах. Но последнее, скорее всего, мне одному нужно.

В андроидовской версии просто просится слайдер в Настройки → Сеть. :)
Title: Re: Размер буфера
Post by: Impulse on September 17, 2021, 10:56:16
Причина обрывов звука при прослушивании интернет-радиостанций может заключатся, кроме прочего, в особенностях пользовательских настроек устройства/смартфона. Если в "настройках" устройства ("Мобильнная сеть") в "Тип сети" задано режим "2G/3G/4G Automatically", то устройство может переключатся с одного стандарта связи на другой (например, с 4g на 3g) и во время такого переключения могут возникать обрывы связи (при прослушивании интернет-радиостанций)(это могу сказать по личному опыту). Поэтому, если нужна более стабильная связь (в идеале, без обрывов), то, в некоторых случаях, может помочь переключение мобильной сети в режим "only 2G" или "only 3G" или "only 4G". Переключение в режим  "only 4G" может быть доступно не на всех устройствах по умолчанию, но этот режим можно задать в "инженерном меню" (если оно доступно). Конечно, важно позаботится, чтобы при (кратковременной) потере связи по причине преключения устройства с одного стандарта связи на другой или при (кратковременной) потере связи по другим причинам обрывы связи не были ощутимы (слушателю интернет-радиостанции), но насколько возможно такое - больше, вероятно, могут сказать Разработчики соотв. аппаратуры и софта.