Сетевое железо - статьи




Введение


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

Дело в том, что мы не можем гарантировать, что определенный пакет, пройдя через десяток маршрутизаторов дойдет до нас в нужное время. А для воспроизведения фрейма в классических схемах (mp3, ogg и т.д.) необходимо получить его целиком. В данной статье обсуждается система для прогрессивной передачи аудио через Интернет, которая будет лишена указанного недостатка.

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

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

Очевидно, что поскольку прогрессивно закодированный фрейм можно урезать до любого размера, мы с легкостью сможем управлять общим битрейтом с точностью до бита! При этом мы не будем привязаны к стандартным значениям: 128Kbps, 64 Kbps и т.д.

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

Программная реализация описанного в данной статье аудио кодера свободно доступна с сайта автора и распространяется на условиях лицензии GNU GPL. Также файлы можно скачать с .




Содержание  Назад  Вперед