Дистрибутив Yoctoap: Album Player + UPnP Renderer + Console Player + Roon/LMS Bridge + GUI

Я просто малинку и тестировал - на 64 битной YoctoAP постоянный отвал через 30-60 сек. Накатил 32 битную - около часа работает стабильно. Уже настроил по Вашей схеме - благодарю за помощь!

Вспомнил, что у меня в этом году RPi3B тоже стабильно работала, что на 32, что на 64 битной YoctoAP, а, вот, эта “четверка” только на 32, получается.

@igor63r Игорь, получается apscream как компонента может получать поток только из протоколов tcp/udp, и сам плеер тоже вшит и является частью этого потока. Я к тому что имея файл с музыкой на той же rpi локально, мы не воспроизведем его через apscream.

Таким образом качество напрямую зависит от уровня сетевых устройств (например организации их питания) или особенностей установленных конкретных приемников, передатчиков.
Опять упираемся в мойку берегов.

Или сами сетевые устройства мало играют роль, т.е. может быть любая цепочка роутеров и сетевых карт на пути, обеспечивающих должное покрытие и отсутствие потерь в сетевых пакетах. И на первое место выходит защищенность канала и так сказать сам сетевой тайминг, что в случае провода стабильнее, учитывая что в большинстве домов масса всевозможных сетей и наводок.

По идее в apsream используется буфер, тогда сетевой тайминг и сама равномерность потока не должны быть идеальными. Секунды полторы 2 у них есть в запасе )

Дмитрий, считайте, что обычный аплеер - это apscream, дополненный воспроизведением локальных файлов. Его ведь никто не отменяет. И там тоже хорошо оптимизирован звуковой движок. Я рекомендовал apscream, поскольку мне удалось получить с ним лучший результат. И я даже не знаю, почему. Обычный плеер тонко настраивается по всем параметрам, возможно, и из него не весь потенциал выжат, можно искать оптимальные настройки. Но при стандартных настройках у меня выигрывает apscream.

Буфер apscream на равномерность потока не влияет. Входной сетевой поток пакетов равномерен за счет реализации передачи в источнике, а каждую порцию данных в драйвер карты apscream пропихивает по приходу очередного сетевого пакета.

2 лайка

А роль буфера какова?

Вы ещё как то с риалтайм ядром экспериментировали, не оправдалось ?

Буфер можно вообще отключить - поставить PRELOAD_BUFFER_FRAMES=0, и будет работать. Роль буфера я недавно пояснял. Это запас на расхождение часов передатчика и приемника, неизбежно накапливаемое с течением времени в случае синхронного протокола.

Риалтайм ядро - это некоторая условность. Это ряд мер, минимизирующих latency в системе. В Yoctoap собственная оптимизация ядра и latency там существенно ниже стандартного ядра.

2 лайка

Читал, хочется понимать какие настройки и когда крутить а не методом тыка, но для осознания не хватает базы.
Можете на пальцах для несведущих пояснить, что такое адаптивный ресемплинг и часы приемника/передатчика ? :slight_smile:
Читал что как раз адаптивный ресемплинг вы устранили в apscream, получается этим буфером?

Да, этим буфером.
Передатчик передает аудио в реальном времени, синхронизируясь по своему тактовому генератору, никак не учитывая состояние приемника.
Приемник воспроизводит принятый поток, синхронизируясь по своему тактовому генератору. Частоты этих двух генераторов никогда не совпадут абсолютно точно. У них есть допустимая погрешность.
В синхронном протоколе, где нет синхронизации передатчика от приемника, длительности передаваемого и воспроизводимого семпла ничтожно отличаются на погрешность генераторов. Но общая разница времени непрерывно накапливается. Когда всё в норме, секунда в среднем набежит за несколько часов. Но бывают расхождения больше. В SPDIF эта проблема решается через ФАПЧ (PLL) , в ALSA/Pulse через ресемплинг. Я, для сохранения стабильности частоты на приемном конце, ничего с принимаемым потоком не делаю, за исключением предоставления буфера, который это расхождение поглотит на всё время воспроизведения.
Но в конкретном случае, при небольшом расхождении генераторов, можно не встретить проблем, даже полностью выключив этот буфер.

2 лайка

Здравствуйте, Игорь!
Слушаю RPi4 + Neo3, подключенные напрямую кабелем друг в друга. Настройки сервера и приемника “из коробки”, музыка на флешке в малинке. Примерно 1 раз в 5-7 мин происходит затык на 2-3 секунды и играет дальше. Чем можно поправить?

Сергей, странно, конечно, в такой конфигурации. Возможно, что-то мешает плееру. Можно попробовать в плеере на вкладке System сделать приоритет больше нуля, например, 5, включить режим Single Core. Если не поможет, то и какое-то аномальное расхождение часов возможно, о чём выше шла речь.

Игорь, а что-то подобное NAA (HQplayer) не думали сделать? То есть, выносной сетевой адаптер с асинхронным FIFO буфером.

Синхронный протокол вместо асинхронного и UDP протокол вместо TCP - потенциальные плюсы apscream в сравнении с NAA.

3 лайка

Сергей, ещё можно попробовать флешку переткнуть в соседнюю пару USB портов.

Не помогло, к сожалению. Каждые 6 минут затык на 2 секунды. У меня малинка какой-то ранней для четверок ревизии с 1 ГБ оперативки.

Сергей, если на первой вкладке панели настроек плеера переключить режим воспроизведения Standard на Direct Input, то что-либо изменится или нет?

Ещё можно проверить версию с сильным расхождением часов. Для этого надо как-то попасть в настройки apscream на NEO3 и поменять там, например, значение PRELOAD_BUFFER_FRAMES со 100000 на 200000. И посмотреть, как это скажется на результате.

Добрый день, Игорь. Большое спасибо вам за 2web, apscream, asioscream! Это то что надо. С наступающим Новым годом, здоровья.

2 лайка

Спасибо! С Наступающим!

1 лайк

@igor63r
Присоединяюсь и спасибо за терпение и пояснения для нечитающих инструкции, ведь на каждом форуме одна и таже история :slight_smile:
С наступающим!

2 лайка

С наступающим Новым Годом!
Здоровья и всех благ!
Спасибо за Ваш плеер!

1 лайк

Подскажите пожалуйста как грамотно реализовать вывод звука с компьютера на raspberry pi 4+pi2aes
Поставил драйвер scream на вин но звука все равно нет.
Если запускаю трек непосредственно через aplayer ( жёсткий диск воткнут в малину) то звук есть

Там есть инструкции в архиве. Если драйвер scream с гитхаба, официальный, то для его настройки в Windows надо запускать от имени администратора командный файл apscream_reg.bat. Если IP адрес приемника не 192.168.1.77, то его надо изменить в конце первой строки этого bat-файла. Затем выбрать Scream как устройство вывода в системе или в плеерах. Если используется драйвер asioscream, то там IP адрес приемника настраивается в файле asioscream.ini в папке драйвера.
На стороне Raspberry надо запускать программу apscream. В меню Yoctoap это кнопка “Scream”.