Можно ли пропустить P-кадр видео HEV C при потоковой передаче? - PullRequest
1 голос
/ 10 января 2020

Я создаю приложение для потокового вещания с использованием кодирования / декодирования HEV C в ненадежной сети. Существуют типы кадров IDR / I / P / B, доступные в HEV C, из которых я использую кадры IDR и P, так как исходное видео захватывается в режиме реального времени, а задержка от устройства захвата до отображения является критической.

Поскольку сеть ненадежна, следует ожидать, что любой кадр в потоке может быть отброшен. Чтобы избежать создания неровных декодированных изображений, я реализовал приемник следующим образом:

  1. 1 кадр IDR и 29 кадров P в секундах (= 30 кадров в секунду) при нормальной работе
  2. Если кадр IDR отбрасывается, предстоящие P-кадры не передаются в декодер и ожидают новый кадр IDR
  3. Если P-кадр отбрасывается, просто пропустите кадр и передайте следующий полученный кадр в декодер

Эта процедура основана на моем понимании того, что P-кадр относится к последнему кадру IDR, поэтому любой P-кадр может быть отброшен, а любой IDR-кадр не может быть отброшен.

Однако декодированные изображения все еще остаются неровными (выглядит декодером не компенсирует векторы движения)

Здесь у меня возникли следующие вопросы:

  • Правда ли, что P-кадр ссылается на последние IDR-кадры? Или любой кадр (включая IDR / I / P / B) не может быть отброшен на HEV C в спецификации?
  • Есть ли какой-нибудь способ избежать зазубрин декодированного видео при потоковой передаче по ненадежной сети?

Большое спасибо заранее!

1 Ответ

2 голосов
/ 10 января 2020

P-кадры могут ссылаться на другие P-кадры. Вы не можете уронить их. Вы можете использовать опорный кадр недействительность, чтобы заставить их относиться только к IDR, но это увеличит битрейт / уменьшение качества изображения.

...