Подходящий временной интервал для потоковой передачи видеофайла клиенту?

Я создаю сервер потокового видео. Теперь я должен передать клиенту данные последовательности (пакеты данных) видеофайла. Но я не знаю тика таймера для передачи пакета данных. Если я передаю слишком быстро, у клиента не будет достаточно времени для декодирования и отображения. Я не знаю, зависит ли это от битрейта или другой информации видеофайла. Я использую видеофайл WMV. Протокол, который я использую для потоковой передачи, - это Windows Media HTTP Streaming. Я программирую на C #.

Информация о видеофайле:

  • Аудио: Windows Media Audio 48000 Гц, стерео, 64 Кбит / с [Raw Audio 0]
  • Видео: Windows Media Video 9 320x240 24,00 кадра / с 230 Кбит / с [Raw Video 1]

По какой формуле я должен рассчитать временной интервал для передачи данных?


person PenguinSh    schedule 09.08.2011    source источник


Ответы (1)


Вы можете рассчитать, сколько данных отправить на основе битрейта видеофайла (который, по вашему мнению, составляет ~ 300 Кбит / с = 38400 байт в секунду), в псевдокоде это будет примерно так:

startTime = Now;
bytesStreamed = 0;
videoFileDataRate = 38400;

while(streaming)
{
  bytesStreamed += streamSomePackets();
  streamDuration = Now - startTime;
  var secondsStreamed = bytesStreamed /videoFileDataRate;
  if(streamDuration < secondsStreamed * 0.99) 
    Throttle();
}
person BrokenGlass    schedule 10.09.2011