- •«Томский политехнический университет»
- •Е.С. Чердынцев мультимедийные сети
- •Глава 1. Введение в мультимедиа
- •1.1. Классификация мультимедиа
- •1.2. Текст
- •1.3. Звук
- •1.4. Графика и анимация
- •1.6.1. Характеристики реального времени (ограничения на задержки и нестабильность)
- •1.5. Видео
- •1.6. Требования к передаче мультимедиа по сетям
- •1.6.2. Требование высокой пропускной способности
- •1.6.3. Требования к ошибкам
- •1.6.4. Поддержка мультикаста
- •1.6.5. Управление сессиями
- •1.6.6. Безопасность
- •1.6.7. Поддержка мобильности
- •Глава 2. Поддержка распределенного мультимедиа трафика в Интернете
- •2.1. Поддержка трафика реального времени в Интернете
- •2.1.1. Задержки при обработке пакетов
- •2.1.2. Задержки при передаче пакетов
- •2.1.3. Задержка передачи
- •2.1.4. Задержки маршрутизации и обработки очередей
- •2.2. Требование высокой пропускной способности
- •2.3. Ошибки характеристик сети
- •2.4. Предлагаемые модели сервисов Интернет
- •2.4.1. Уточнение требований к сервисам и описанию трафика
- •2.4.2. Управление доступом
- •2.4.3. Управление трафиком
- •2.4.4. Классификация пакетов
- •2.4.5. Планирование пакетов
- •2.4.6. Потеря пакетов
- •2.4.7. Маршрутизация на основе QoS
- •2.5. Интегрированные сервисы
- •2.5.1. Классы гарантированного обслуживания
- •2.5.2. Сервис управления загрузкой
- •2.5.3. Сервис негарантированной доставки
- •2.5.4. Недостатки модели Intserv для Интернета
- •2.6. Дифферецированный сервис
- •2.6.1. Per Hop Behavior
- •2.7. Мультипротокольная коммутация по меткам
- •Глава 3. Расширение стека протоколов tcp/ip для поддержки функциональных требований распределенных мультимедийных приложений
- •3.1. Поддержка мультикаста
- •3.2. Управление сессиями
- •3.3. Безопасность
- •3.4. Мобильность
- •3.6. Session Initiation Protocol
- •Глава 4. Введение в rtp
- •4.1. Базовые принципы rtp
- •4.2. Стандартные элементы rtp
- •4.3. Связанные с rtp стандарты
- •Глава 5. Описание протокола rtp
- •5.1. Сессии rtp
- •5.2. Структура пакета rtp
- •5.3. Проверка качества пакета
- •5.4. Трансляторы и миксеры
- •Глава 6. Описание протокола rtсp
- •6.1. Компоненты rtcp
- •6.2. Передача пакетов rtcp
- •6.3. Формат пакетов rtcp
- •6.4. Безопасность и конфиденциальность
- •6.5. Проверка корректности данных
- •6.6. База данных участников сессии
- •6.7. Управление характеристиками времени
- •6.7.1. Отчетные интервалы
- •6.7.2. Базовые правила передачи
- •6.7.3. Процедура пересмотра вперед
- •6.7.4. Процедура пересмотра назад
- •6.7.5. Пересмотр пакетов bye
- •6.7.6. Общие проблемы реализации
- •Глава 7. Захват мультимедиа, проигрывание и управление характеристиками времени
- •7.1. Поведение отправителя
- •7.2. Захват мультимедиа и сжатие
- •7.2.1. Захват и сжатие звука
- •7.2.2. Захват и сжатие изображения
- •7.2.3. Использование предварительно записанной информации
- •7.3. Генерация пакетов rtp
- •7.3.1. Метки времени и модель времени rtp
- •7.3.2. Фрагментация
- •7.3.3. Заголовки, зависящие от формата данных
- •7.4. Поведение получателя
- •7.5. Получение пакетов
- •7.5.1. Получение пакетов данных
- •7.5.2. Получение управляющих пакетов
- •7.6. Буфер проигрывания
- •7.7. Декодирование, смешивание и проигрывание
- •7.7.1. Декодирование
- •7.7.2. Смешивание звука
- •Глава 8. Синхронизация звука и изображения
- •8.1. Поведение отправителя
- •8.2. Поведение получателя
- •8.3. Точность синхронизации
- •Глава 9. Компенсация ошибок
- •9.1. Компенсация потерь звука
- •9.1.1. Измерение качества звука
- •9.1.2. Замещение периодами тишины
- •9.1.3. Замещение шума
- •Глава 10. Исправление ошибок
- •10.1. Прямое исправление ошибок
- •Глава 11. Контроль перегрузок
- •11.1. Необходимость контроля перегрузок
- •10.1.1. Контроль четности
- •References
- •Multimedia networks
- •Published in author’s version
7.7. Декодирование, смешивание и проигрывание
Завершающей стадией процесса проигрывания является декодирование сжатых данных, смешивание отдельных потоков и собственно проигрывание данных для пользователя.
7.7.1. Декодирование
Для каждого активного источника приложение должно использовать декодер. Декодер может быть реальным физическим устройством или программным средством. Он преобразует сжатый фрейм в несжатые данные, как показано на рис. 7.8.
Рис. 7.8. Декомпрессия фреймов декодером
Если часть фреймов потеряна, декодер может выдать некорректный результат. В этом случае в процессе проигрывания может возникнуть пауза.
7.7.2. Смешивание звука
Смешивание является процессом объединения нескольких потоков в один. Этот случай более всего характерен для звуковых приложений, которые получают звук из нескольких источников, а проигрывают его на одном комплекте воспроизведения, например, при проведении телеконференции. Процесс смешивания показан на рис. 7.9.
Рис. 7.9. Смешивание звука
Глава 8. Синхронизация звука и изображения
Сессия мультимедиа состоит из нескольких потоков, каждый из которых передается в отдельной сессии RTP. Так как задержки, связанные с форматами кодирования, существенно различаются, то в разных потоках будет разное время проигрывания, как показано на рис. 8.1.
Рис. 8.1. Синхронизация потоков мультимедиа
Обычно синхронизация применяется для выравнивания потоков звука и изображения, но данная технология может применяться для любых типов потоков.
Часто разделение звука и изображения на отдельные потоки диктуют предпочтения участников сессии. Некоторые в видеоконференциях предпочитают получать только звук. Это особенно важно для конференций с большим количеством участников.
8.1. Поведение отправителя
Отправитель помогает в процессе синхронизации потоков мультимедиа путем запуска общих часов и периодического уведомления через пакеты RTCP о рассогласовании общего и потокового времени. Общие часы идут с постоянной скоростью, а получателю дается информация, помогающая выравнивать скорости в потоках, как показано на рис. 8.2.
Рис. 8.2. Выравнивание времени по общим часам
Соответствие между общим временем и потоковым определяется в момент формирования пакета RTCP. Общее время Treference отражается в метке времени пакета RTP:
TRTP = Treference × Raudio + Oaudio
Отсюда получаем смещение часов:
Oaudio = Taudio – (Tavailable – Daudio_capture) × Raudio
Здесь Tavailable определяется задержками операционной системы, а Daudio_capture – длительностью процесса захвата данных.
На рис. 8.3 демонстрируется необходимость синхронизации часов, когда потоки мультимедиа получаются из разных источников.
Еще одна проблема синхронизации – идентификация потоков, к которым она должна быть применена. RTP решает ее путем выдачи связанным источникам общих имен (CNAME), поэтому получатель различает зависимые и независимые потоки.
Рис. 8.3. Синхронизация потоков от разных источников
8.2. Поведение получателя
Получатель должен выделить синхронизируемые потоки и выровнять их перед проигрыванием. Первое достигается достаточно просто использованием одинаковых имен CNAME в разных потоках. Сложнее сама процедура синхронизации (рис. 8.4 и 8.5).
Рис. 8.4. Синхронизация звука и изображения на стороне пользователя
Рис. 8.5. Установление соответствия времен на стороне пользователя
Получатель вначале определяет соответствие между общим временем, установленным отправителем, и временем синхронизируемых потоков путем сравнивания данных RTP и RTCP пакетов. При получении пакета данных RTP с меткой времени M может быть вычислено время захвата:
Здесь Msr – метка времени RTP в последнем полученном пакете RTCP, TSsr – общее время в секундах, R – номинальная скорость часов данных в герцах. Получатель также вычисляет время вывода синхронизированных данных TR согласно локальным часам. Оно равно метке времени пакета, согласованной с общим временем отправителя, плюс задержка в буфере проигрывания для декодирования, смешивания и обработки.
Когда время захвата и проигрывания известны, получатель может вычислить относительную задержку между захватом данных и их проигрыванием для каждого потока. Если данные захвачены во время TS по общему времени отправителя и выводятся в момент времени TR по часам получателя, то разница между ними D = TR – TS даст величину задержки между захватом изображения и его выводом. Из-за того, что часы отправителя и получателя не синхронизированы, это значение включает в себя неизвестное смещение между ними, но его можно игнорировать, так как оно одинаково для всех синхронизируемых потоков, а нас интересует только относительное смещение между потоками.
После вычисления этой задержки как для потока звука, так и для потока изображения можно вычислить собственно задержку синхронизации потоков D = Daudio – Dvideo. Если это значение получится равным нулю, то потоки синхронизированы. В противном случае оно дает смещение между потоками в секундах.
Для опережающего потока данных задержка синхронизации умножается на номинальную скорость потока данных для преобразования значения в формат метки времени данных и затем используется как значение постоянного смещения во всех вычислениях времени.
Пользователь в соответствии со своими приоритетами может выбирать, по какому потоку проводить синхронизацию. Для большинства кодеков кодирование и декодирование видео является доминирующим фактором, но звук более чувствителен к происходящим изменениям.
Задержку синхронизации необходимо пересчитывать при изменении задержки проигрывания любого из потоков. Это также необходимо при изменении соотношения между общим временем и временем потока.
