J'ai un flux d'octets dans la mémoire qui appartient à un fichier vidéo.
Notez que le flux d'octets ne représente pas l'ensemble du fichier vidéo, mais plutôt un morceau du fichier vidéo en octets dont je dispose à ce moment-là. Je veux pouvoir lire ce morceau sur un lecteur vidéo, ou le diffuser en continu si possible. Mais je veux pouvoir contrôler moi-même le flux de la diffusion puisque je reçois la source de la vidéo de différents serveurs.
Nous avons essayé l'échantillon ci-dessous :
https://www.codeproject.com/Articles/820146/HTTP-Partial-Content-In-ASP-NET-Web-API-Video
Dans mon cas, le premier morceau du fichier a été téléchargé et a joué l'audio. Après le chargement du morceau suivant, même si le fichier est mis à jour, il ne l'est pas dans le lecteur. Il faut fusionner les morceaux et mettre à jour le fichier dans le lecteur. Veuillez trouver l'extrait de code ici :
int count = 0;
long remainingBytes = end - start + 1;
long position = start;
byte[] buffer = new byte[ReadStreamBufferSize];
byte[] temp = new byte[ReadStreamBufferSize];
inputStream.Position = start;
int item = 1;
do
{
try
{
byte[] byteAry = new byte[ReadStreamBufferSize];
if (System.IO.File.Exists("D:\\test\\pp" + item + ".wav")){
byteAry = System.IO.File.ReadAllBytes("D:\\test\\pp" + item + ".wav");
}
else
{
break;
}
temp = temp.Concat(byteAry).ToArray();
inputStream = new MemoryStream(temp);
if (remainingBytes > ReadStreamBufferSize)
count = inputStream.Read(buffer, 0, ReadStreamBufferSize);
else
count = inputStream.Read(buffer, 0, (int)remainingBytes);
outputStream.Write(buffer, 0, count);
}
catch (Exception error)
{
Debug.WriteLine(error);
break;
}
position = inputStream.Position + 100;
end = inputStream.Length;
remainingBytes = end - position + 1;
item++;
} while (position <= end);