私は、カメラ(MJPEG)からストリームを読み込んで、フォーム上にリアルタイムで(ピクチャボックス内に)表示するアプリケーションを持っています。これは機能しています。このストリーム読み取りは、ユーザが「開始」ボタンをクリックすると開始する。MJPEGストリームをディスクに保存する方法(C#.NET)
私がしたいのは、ユーザーがボタン "Stop"をクリックすると、ボタン "Start"と "Stop"の間のストリームが.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);
ありがとうございます!
があることがございます。すべてのファイルは、ファイルを記述するヘッダーとデータを含むファイル形式を持ちます。ストリームの1つのセクションをバイト単位で保存するだけの場合は、ファイル形式を壊している可能性があり、ディスクに保存するときに重要なデータが失われている可能性があります。それは私の推測だろう。 –
カメラからファイル全体をコピーしようとしましたが、同じことが起こりました。他のアイデア? –
MJPEGはmpeg(またはmpg)と同じではありません。 2つの異なるコーデック。 mpegにトランスコードする(==ルーズ・クオリティ)必要がある場合を除き、mjpegとして保管してください。あなたがそれを含む必要がある場合、あなたは、MPEGよりもQuicktimeまたはAVIを使う方が良いです。 – BlueVoodoo