2015-02-26 1 views
0

КонтекстаИдеи для обработки потерянных пакетов (теория)

  • Мы получили ип нестационарного канала передачи. Некоторые пакеты могут быть потеряны.
  • Отправка одного сетевого пакета в любом направлении (от A до B или от B до A) занимает 3 секунды.
  • Мы допускаем задержку сигнала 5 секунд, не более. Итак, у нас есть 5-секундный буфер. Мы можем использовать эти 5 секунд, но мы хотим.
  • В настоящее время мы используем только 80% канала передачи, поэтому у нас есть еще 1/4 места для использования.
  • Качество видео не может ухудшиться.
  • Нам нужно использовать UDP.

Проблема

Мы должны сделать качество лучше. Как обращаться с потерянными пакетами? Нам нужно использовать UDP и самостоятельно обрабатывать эти ошибки. Как это сделать? Как убедиться, что не так много пакетов будет потеряно, как сейчас (мы не можем гарантировать 100%, поэтому мы хотим только ), не ретранслируя их? Мы можем сделать все, это теория.

ответ

1

Есть разные логики для обработки этих вещей. Это зависит от того, какое приложение вы используете. Вы делаете потоковое видео в реальном времени? строгие требования?

  1. Как вы сказали, что есть буфер, вы можете сохранить буфер для пакетов, а затем отправить подтверждение для потерянных пакетов (если вы чувствуете, что вы можете ждать).

  2. Поскольку это видеоприложение, отправьте подтверждения только на ключевые фреймы. убедитесь, что у вас есть ключ или I кадр, а затем выполните интерполяцию со стороны rx.

  3. Посмотрите на что-то, называемое форвардной коррекцией ошибок, кодами фонтана, luby-кодами. Здесь вы будете кодировать пакеты 1 и 2 и создавать пакет 3. Если пакет 1 потерян, используйте пакеты3 и пакет2, чтобы получить пакет1 обратно со стороны rx. В основном вы отправляете избыточные пакеты. Его немного суровая по сети, но вы получаете большую часть данных.

+0

ДА! Решение (3) является решением! Спасибо!!! –