增加录制视频ffmpeg中的fps

时间:2016-11-07 10:56:16

标签: c# video ffmpeg aforge

我需要以全高清30 fps的速度从2台摄像机录制2个视频。 我使用ffmpeg和wrapper - Aforge for c#。

init device:

        _videoCaptureDevice = new VideoCaptureDevice(deviceName);
        _videoCaptureDevice.VideoResolution = _videoCaptureDevice.VideoCapabilities[0];
        _videoCaptureDevice.DesiredFrameRate = _fps;
        _videoSourcePlayer.VideoSource = _videoCaptureDevice;
        _videoCaptureDevice.NewFrame += _videoCaptureDevice_NewFrame;
        _videoSourcePlayer.Start();

保存帧

        if (_videoRecordStatus == VideoRecordStatus.Recording)
        {
            _videoFileWriter.WriteVideoFrame(eventArgs.Frame);
        }

和init文件编写器

            _videoFileWriter = new VideoFileWriter();
            _videoFileWriter.Open(_fileName, _videoCaptureDevice.VideoResolution.FrameSize.Width,
                _videoCaptureDevice.VideoResolution.FrameSize.Height, 30, VideoCodec.MPEG4, 10 * 1000 * 1000);

现在_videoCaptureDevice.VideoResolution.FrameSize等于1280x720和640x480(对于第二个设备)。但我的录音问题已经存在。最大fps为480p为24,720p为13-14(当我尝试同时录制来自2个摄像机的视频时)

如何增加它? 还是不可能?也许更强大的计算机将解决这个问题(我有Pentium(R)双核CPU 2.50Ghz和通常的视频卡(Geforse 8500 GT)用于两个显示器,通常的硬盘,USB 2.0)?

我会很高兴任何帮助(可能是另一个图书馆,但不是语言(c#))

PS 我已经使用过Emgu.CV并面临类似的问题..

1 个答案:

答案 0 :(得分:0)

帧速率受硬件限制。

使用 AMCap GraphEdit 检查相机真正支持的内容。这取决于选择的分辨率和输出格式(更高的分辨率 - >更低的帧速率)。

请注意,AForge始终使用可能导致过采样的所有分辨率的最高值(例如:AForge产生60Hz的光线,但相机在给定分辨率下仅支持15Hz,因此图像大部分都是重复的。 here

还可以使用流程资源管理器分析器来查看您的CPU有多忙以及它在做什么。