在C#Win Forms应用程序中播放原始视频帧
如何从原始视频数据(in.rgb或.raw)播放和保存选定的原始视频帧 原始未压缩视频数据为320 x 240灰度格式,每像素1字节,每秒仅30帧 但是我如何以30 FPS的速度查看多个帧呢? 我可以使用DirectShow或类似的API吗?什么是开始工作的最佳资源?我看了FFPMEG,但我想避免显示压缩帧,因为这是为了科学应用 到目前为止,我已经能够从原始视频数据(in.rgb)中查看一帧,使用C#.NET for Win Forms中的这段代码,使用图片框控件。 但不知道如何做多帧,也许有一个寻找控制在C#Win Forms应用程序中播放原始视频帧,c#,winforms,rgb,directshow,video-processing,C#,Winforms,Rgb,Directshow,Video Processing,如何从原始视频数据(in.rgb或.raw)播放和保存选定的原始视频帧 原始未压缩视频数据为320 x 240灰度格式,每像素1字节,每秒仅30帧 但是我如何以30 FPS的速度查看多个帧呢? 我可以使用DirectShow或类似的API吗?什么是开始工作的最佳资源?我看了FFPMEG,但我想避免显示压缩帧,因为这是为了科学应用 到目前为止,我已经能够从原始视频数据(in.rgb)中查看一帧,使用C#.NET for Win Forms中的这段代码,使用图片框控件。 但不知道如何做多帧,也许有一
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;
byte[]imageData=File.ReadAllBytes(“output.rgb”);
Console.WriteLine(“imageDataLen=“+imageData.Length”);
整数宽度=320;
整数高度=240;
var bmp=新位图(宽度、高度、像素格式.Format8BppIndex);
//bmp=(位图)转换成灰度(bmp);
调色板pal=bmp.palete;
对于(int i=0;i),您可以简单地将视频帧字节传输到directx表面,并使用directx API显示它。至于查找:您可能需要编写一个自定义源过滤器(对于directshow)媒体基础的自定义媒体源。谢谢!我应该用这里的细节将视频帧字节传送到DirectX表面。这似乎是C++实现,这可以用C语言来完成吗?我也可以使用DirectX API和DirectShow一起编写自定义源过滤器(用于查找等)?DirectShow提供了硬件加速的视频渲染器,如VMR9和EVR,您可以直接在应用程序中使用。您只需为原始未压缩视频数据提供自定义源。您可以查看PushSource DirectShow筛选器示例:您可以在此处查看.NET实现:您只需将视频帧字节传输到directx表面并使用DirectX API显示它。至于搜索:您可能需要编写一个自定义源过滤器(用于directshow)媒体基础的自定义媒体源。谢谢!我应该用这里的细节将视频帧字节传送到DirectX表面。这似乎是C++实现,这可以用C语言来完成吗?我也可以使用DirectX API和DirectShow一起编写自定义源过滤器(用于查找等)?DirectShow提供硬件加速的视频渲染器,如VMR9和EVR,您可以直接在应用程序中使用。您只需提供原始未压缩视频数据的自定义源。您可以查看PushSource DirectShow筛选器示例:您可以在此处查看.NET实现: