В настоящее время у меня есть поток GStreamer, отправляемый по беспроводной сети. У меня есть аппаратный кодер, который скрывает необработанное несжатое видео в транспортном потоке MPEG2 с кодировкой h.264. Оттуда я передаю данные в конвейер GStreamer, который отправляет поток через RTP. Все работает, и я вижу видео, однако мне было интересно, есть ли способ ограничить эффект потери пакетов, настроив определенные параметры на кодировщик.Streaming Video On Lossy Network
Два основных параметра, на которые я смотрю, - это размер GOP и частота кадров I. Оба приведены в документации на кодере (в Sensoray 2253) следующим образом:
V4L2_CID_MPEG_VIDEO_GOP_SIZE: Диапазон Целое число от 0 до 30. Значение по умолчанию равно 0, значит использовать кодек по умолчанию размер GOP. Только захват.
V4L2_CID_MPEG_VIDEO_H264_I_PERIOD: Целочисленный диапазон от 0 до 100. Только для кодирования H.264. Значение по умолчанию 0 будет кодировать первый кадр только в качестве IDR, в противном случае кодировать IDR в первом кадре каждой N-й GOP.
В принципе, я стараюсь дать декодеру как можно больше шансов создать плавное воспроизведение видео, даже учитывая тот факт, что сеть может отбрасывать пакеты. Увеличивает ли I частота кадров? А именно, поскольку I-кадр не имеет данных относительно предыдущих или будущих пакетов, отправит «полный» образ помощи? Какова была бы «идеальная» настройка для двух вышеуказанных параметров, учитывая тот факт, что данные передаются через сеть с потерями? Обратите внимание, что я могу принять небольшое (~ 10%) увеличение полосы пропускания, если это означает, что видео стало более плавным, чем сейчас.
Я также понимаю, что это сильно зависит от декодера, поэтому для аргумента предположим, что моим основным декодером на стороне клиента является VLC.
Заранее благодарим за помощь.
Спасибо за головы, но, к сожалению, у меня нет контроля над клиентом. Похоже, я могу установить размер GOP и IDR как на 1 (см. Выше определения), и это будет отправлять только I фреймы, и это поможет любому клиентскому декодеру обновить изображение, исправить? –
Да, но учтите дополнительные накладные расходы. Видео будет выглядеть значительно хуже, чем стандартная 15-кратная GOP. Вы можете играть с вашими значениями, чтобы увидеть, что дает лучшее видео с наименьшей потерей. Выполнение ключевого кадра каждые 5 или 6 кадров, вероятно, будет выглядеть лучше и иметь разумное время восстановления. Это над контролируемой сетью? – jeremy
Благодарим за рекомендации по частоте I-кадра и размеру GOP. Я буду играть со значениями и посмотреть, что произойдет. Должен ли я видеть значительное увеличение пропускной способности при изменении частоты I-кадров? Причина, по которой я спрашиваю, это то, что я не сейчас, поэтому мне также интересно, неправильно ли этот код устанавливает эти ставки. Кроме того, чтобы ответить на ваш вопрос, у меня нет контроля над сетью, но если бы я это сделал, каковы некоторые параметры, которые я мог бы применить или использовать для улучшения качества моего потока? –