Изучаю вопрос вещания MPEG TS файлов в C# 5.0/.Net Core 3.1 Знаю, что в этих файлах есть временные метки и достать их не проблема. Вопрос пока самый простой. Есть MPEG TS файл. продолжительность этого файла 60100 мсек. Следующий код выстреливает весь файл за примерно 5000 мсек. Нужно чтобы это происходило за 60100 мсек.
static void Main(string[] args)
{
string tsFile = @"file.ts";
byte[] bytes = File.ReadAllBytes(tsFile);
UdpClient outPutUdpClient = new UdpClient { ExclusiveAddressUse=false};
IPAddress outPutIp = IPAddress.Parse("192.168.99.239");
int multicastPort = 1234;
var localEp = new IPEndPoint(outPutIp, multicastPort);
outPutUdpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
outPutUdpClient.Ttl = 3;
outPutUdpClient.Client.Bind(localEp);
var mcastAddr = IPAddress.Parse("239.1.1.1");
outPutUdpClient.Connect(mcastAddr, multicastPort);
for(int i = 1315; i < bytes.Length; i+=1316) // take 7 mpeg(188*7) ts packets per UPD packet
{
int begin = i-1315;
int end = i;
var sendBytes = bytes[begin..end];
try
{
outPutUdpClient.Send(sendBytes, sendBytes.Length);
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
Console.WriteLine("Done");
Console.ReadKey();
}
Можно читать файл по кускам и делать задержки при чтении. Можно прочитать весь файл и делать задержки при отправке. Какой подход для этой задачи будет верным? И как лучше организовать задержку?



