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