我有一個應用程序,從相機(MJPEG)讀取流,並實時(在圖片框中)在窗體上顯示它。這是行得通的。當用戶點擊「開始」按鈕時,此流讀取開始。如何將MJPEG流保存到磁盤(C#.NET)?
我想要做的是,當用戶點擊一個按鈕「停止」時,按鈕「開始」和「停止」之間的流將作爲一個.mpg保存在磁盤上。
現在,它在磁盤上寫了一些東西,但我無法在Windows Media Player中打開它。
這裏是寫流
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();
}
下面是調用函數的地方的代碼。這是一個循環,正如我所說,視頻在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);
非常感謝!
可能是因爲您沒有保存在正確的格式文件。所有文件都有文件格式,包括描述文件的標題和數據。如果您只以字節保存流的一部分,則可能會弄亂文件格式,並且在將其保存到磁盤時可能會丟失重要數據。這將是我的猜測。 – 2010-12-07 16:32:36