【发布时间】:2014-01-28 19:47:56
【问题描述】:
我正在编写一个程序来将一些网络摄像头视频保存到文件中。我正在使用此处找到的 x264 编解码器 x264
当我尝试将帧写入文件时,我会弹出此错误消息。
x264vfw [警告]:可能会丢失几帧。修复方法 这个:
x264vfw [警告]:-如果您使用 VirtualDub 或其分支,则可以 启用“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<Bgr, Byte> video;
video = capture.RetrieveBgrFrame();
CaptureOutput.WriteFrame(video);
}
【问题讨论】:
-
我认为我在 X264 上使用 avi 容器可能会造成一些麻烦
标签: c# opencv video-capture codec x264