Как преобразовать файлы JPEG, которые я получил из цветного видеопотока Kinect SDK2 в .AVI в C # - PullRequest
0 голосов
/ 06 июня 2019

Я использую 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 #.

1 Ответ

0 голосов
/ 06 июня 2019

Хорошо, я нашел ответ.

В примере я нашел свой ответ = 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");

...