我使用Kinect SDK 2,C#。 我想以.AVI格式保存颜色流。 我得到每一帧,并以序列号保存为.jpeg格式。我不确定用.png或.jpeg更好吗?我需要在代码中将这些图像转换成.AVI文件。
这是我保存色流图像的方法。您能给我一些建议吗?
private void Reader_ColorFrameArrived(object sender,
ColorFrameArrivedEventArgs e)
{
// ColorFrame is IDisposable
using (ColorFrame colorFrame = e.FrameReference.AcquireFrame())
{
if (colorFrame != null)
{
var bytesPerPixel = (PixelFormats.Bgr32.BitsPerPixel) / 8;
var stride = bytesPerPixel *
colorFrame.FrameDescription.Width;
if (colorRecord == 1)
{
colorFrame.CopyConvertedFrameDataToArray(colorData, format);
var fd = colorFrame.FrameDescription;
// Creating BitmapSource
bmpSource = BitmapSource.Create(fd.Width, fd.Height, 96.0, 96.0, PixelFormats.Bgr32, null, colorData, stride);
// WritableBitmap to show on UI
kinectImage.Source = bmpSource;
kinectImage.Source = colorBitmap;
// JpegBitmapEncoder to save BitmapSource to file
// imageSerial is the serial of the sequential image
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmpSource));
using (var fs = new FileStream("img" + (imageSerial++) + ".jpeg", FileMode.Create, FileAccess.Write))
{
encoder.Save(fs);
}
}
}
我在其中一篇文章中找到了有关ffmpeg的信息,但我不明白如何在c#中使用它。
答案 0 :(得分:0)
Okey,我找到了答案。
我找到答案的示例= https://github.com/rafaftahsin/Kinect-v2-Color-Frame-Recorder
我只是将ffmpeg.exe文件放到该文件夹中。 然后运行代码= Process.Start(“ ffmpeg.exe”,“ -framerate 10 -i img%d.jpeg -c:v libx264 -r 30 -pix_fmt yuv420p kinect_video.mp4”);