RU

Один пакет — один мини-плеер: почему мы перенесли голос БОЛТУНа в AudioWorklet

Почему исправные 20-мс аудиопакеты всё равно превращались в щелчки? В БОЛТУНе каждый пакет запускался как отдельный AudioBufferSourceNode — до 50 ми…

TauriAudioWorkletWeb Audio APIWebView2PCM16аудиоголосовая связьджиттер-буферreal-time audioWebSocket
Habr
RU

После сборки на Tauri затрещал голос и почернел стрим: разбираем три ошибки одного теста

После сборки на Tauri голос начал трещать, автокалибровка почти минуту вмешивалась в разговор, а демонстрация экрана через минуту становилась чёрной…

TauriWebView2Web Audio APILiveKitWebRTCOpusAndroidджиттер-буфераудиодемонстрация экрана
Habr
RU

[Перевод] Как «быстрый» кольцевой буфер поднял загрузку CPU с 2% до 25%

Я заменил std::deque на boost::circular_buffer в надежде получить прирост производительности. В реальности получил загрузку процессора в 25% вместо…

c++boostperformanceаудиоraspberry pibenchmarkпроизводительностьбенчмарки
Habr
RU

Как я три года пилю свой музыкальный сервер: часть вторая. Архитектура Kalinka и её место среди музыкальных систем

Как устроен KalinkaPlayer: модульный бэкенд, нативный аудиоплеер, пайплайн метаданных и мобильное управление в одном проекте. Изучить архитектуру

LinuxRaspberry PiPythonC++FastAPIALSAopen sourceself-hostedзвук и музыкааудио
Habr
RU

Я перестал доверять стримингам. Поэтому написал свой iOS-плеер — с CarPlay и без вранья про звук

Я перестал верить стримингам. Не философски, а практически. Половина любимых альбомов либо ушла из каталогов, либо вернулась пересведенной так, что…

iOSSwiftSwiftUIAVFoundationCarPlayShazamKitаудиоHi-ResDSPинди-разработка