捕获video时出现X264错误消息

我正在编写一个程序,将一些网络摄像头video保存到文件中。 我正在使用x264中的x264编解码器

当我尝试将帧写入文件时,我会弹出此错误消息。 错误

x264vfw [警告]:很少有帧丢失。 解决这个问题的方法:

x264vfw [警告]: – 如果您使用VirtualDub或其fork,则可以启用“VirtualDub Hack”选项

x264vfw [警告]: – 您可以启用“文件”输出模式

x264vfw [警告]: – 您可以启用“零延迟”选项

我找到了这个VirtualDub Hack,但后来我没有使用虚拟配音。 我不确定文件输出模式和零延迟是什么意思。

我认为问题与编解码器有关,因为当我改用使用不同的编解码器时,一切正常。 我正在使用C#和emgu,但我不认为这就是问题所在。

编辑

如果代码有帮助

public static void StartCapture() { try { capture = new Capture(); capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 1920); //1920 capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 1080); //1080 CaptureOutput = new VideoWriter ( "capture output.avi", CvInvoke.CV_FOURCC('X','2','6','4'), 50, //fps (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH), (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT), true ); if (capture != null) { capture.ImageGrabbed += SaveFrame; capture.Start(); } } catch (Exception e) { MessageBox.Show(e.ToString()); } } static void SaveFrame(System.Object sender, EventArgs e) { Image video; video = capture.RetrieveBgrFrame(); CaptureOutput.WriteFrame(video); } 

我知道有点晚了,但我想出来了。 解决方案(在Windows上)是设置-1而不是编解码器的fourcc。 这会弹出一个对话框,您可以在其中选择编解码器,如果您选择x264wfv,则会有一个配置按钮,您可以配置这些选项(零延迟适用于我)。 下次编解码器将使用完全相同的设置,因此您可以使用fourcc代码运行程序。