如何从原始视频数据(以.rgb或.raw)播放和保存选定的原始视频帧。
原始未压缩视频数据为320 x 240灰度格式,1字节/像素,仅30 fps。
但是如何在30 FPS中查看多个帧? 我可以使用DirectShow或类似的API吗?什么是开始的最佳资源?我看了FFPMEG,但我想避免显示压缩帧,因为它是用于科学应用。
到目前为止,我已经能够使用Picture Box控件在C#.NET for Win Forms中使用此代码从原始视频数据(在.rgb中)中查看一个帧。 但不确定如何做多个帧并且可能有寻求控制。
byte[] imageData = File.ReadAllBytes("output.rgb");
Console.WriteLine("imageDataLen=" + imageData.Length);
int width = 320;
int height = 240;
var bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed);
//bmp = (Bitmap) ConvertToGrayScale(bmp);
ColorPalette pal = bmp.Palette;
for (int i = 0; i <= 255; i++)
{
// create greyscale color table
pal.Entries[i] = Color.FromArgb(i, i, i);
}
bmp.Palette = pal;
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0,
bmp.Width,
bmp.Height),
ImageLockMode.WriteOnly,
bmp.PixelFormat);
Marshal.Copy(imageData, 0, bmpData.Scan0, width * height);
bmp.UnlockBits(bmpData);
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.Image = bmp;