Я создаю приложение для потокового вещания с использованием кодирования / декодирования HEV C в ненадежной сети. Существуют типы кадров IDR / I / P / B, доступные в HEV C, из которых я использую кадры IDR и P, так как исходное видео захватывается в режиме реального времени, а задержка от устройства захвата до отображения является критической.
Поскольку сеть ненадежна, следует ожидать, что любой кадр в потоке может быть отброшен. Чтобы избежать создания неровных декодированных изображений, я реализовал приемник следующим образом:
- 1 кадр IDR и 29 кадров P в секундах (= 30 кадров в секунду) при нормальной работе
- Если кадр IDR отбрасывается, предстоящие P-кадры не передаются в декодер и ожидают новый кадр IDR
- Если P-кадр отбрасывается, просто пропустите кадр и передайте следующий полученный кадр в декодер
Эта процедура основана на моем понимании того, что P-кадр относится к последнему кадру IDR, поэтому любой P-кадр может быть отброшен, а любой IDR-кадр не может быть отброшен.
Однако декодированные изображения все еще остаются неровными (выглядит декодером не компенсирует векторы движения)
Здесь у меня возникли следующие вопросы:
- Правда ли, что P-кадр ссылается на последние IDR-кадры? Или любой кадр (включая IDR / I / P / B) не может быть отброшен на HEV C в спецификации?
- Есть ли какой-нибудь способ избежать зазубрин декодированного видео при потоковой передаче по ненадежной сети?
Большое спасибо заранее!