Соответствующий интервал времени для потоковой передачи видеофайла клиенту? - PullRequest
0 голосов
/ 09 августа 2011

Я создаю сервер потокового видео. Теперь я должен передать данные последовательности (пакеты данных) видеофайла клиенту. Но я не знаю отметки таймера для передачи пакета данных. Если я перевожу слишком быстро, у клиента не будет достаточно времени для декодирования и отображения. Я не знаю, зависит ли это от битрейта или другой информации видеофайла. Я использую видеофайл 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]

Какую формулу следует использовать для вычисления интервала времени для передачи данных?

1 Ответ

0 голосов
/ 11 сентября 2011

Вы можете рассчитать объем передаваемых данных на основе битрейта видеофайла (который, как вы говорите, ~ 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();
}
...