J'ai une application qui lit le flux d'une caméra (MJPEG) et l'affiche sur le formulaire en temps réel (dans une zone d'image). Cela fonctionne. Cette lecture de flux commence lorsque l'utilisateur clique sur le bouton "Démarrer". Ce que je veux faire est que lorsque l'utilisateur clique sur un bouton "Stop", le flux entre les boutons "Start" et "Stop" serait sauvegardé sur le disque en tant que .mpg.Comment enregistrer un flux MJPEG sur le disque (C# .NET)?
À l'heure actuelle, il écrit quelque chose sur le disque, mais je ne peux pas l'ouvrir dans Windows Media Player.
Voici le code pour écrire le flux
private void ReadWriteStream(byte[] buffer, int start, int lenght, Stream writeStream)
{
Stream readStream = new MemoryStream(buffer, start, lenght);
int bytesRead = readStream.Read(buffer, 0, m_readSize);
// write the required bytes
while (bytesRead > 0 && !m_bStopLecture)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, m_readSize);
}
readStream.Close();
}
Voici le lieu qui appelle la fonction. C'est dans une boucle et comme je l'ai dit, la vidéo joue dans le PictureBox.
// image at stop
Stream towrite = new MemoryStream(buffer, start, stop - start);
Image img = Image.FromStream(towrite);
imgSnapshot.Image = img;
// write to the stream
ReadWriteStream(buffer, start, stop - start, writeStream);
Merci beaucoup!
peut-être parce que vous n'êtes pas enregistrez le fichier dans le format correct. Tous les fichiers ont des formats de fichiers qui incluent des en-têtes et des données qui décrivent le fichier. Si vous n'enregistrez qu'une section du flux en octets, vous risquez d'endommager le format de fichier et de manquer des données importantes lorsque vous l'enregistrez sur le disque. C'est ce que je présume. –
J'ai essayé de copier le flux entier de l'appareil photo dans un fichier et les mêmes choses se sont produites. D'autres idées? –
MJPEG n'est pas la même chose que mpeg (ou mpg). Deux codecs différents. Sauf si vous voulez transcoder (== perte de qualité) en MPEG, essayez de garder est comme mjpeg. Si vous avez besoin de le contenir, il vaut mieux utiliser Quicktime ou AVI que Mpeg. – BlueVoodoo