Я пишу программу для сохранения видео в веб-камере в файл. Я использую кодек x264, найденный здесь x264X264 Сообщение об ошибке при съемке видео
Когда я пытаюсь записать фреймы в файл, я получаю это сообщение об ошибке.
x264vfw [предупреждение]: Несколько кадров, вероятно, будут потеряны. Способы исправить это:
x264vfw [предупреждение]: -если использовать VirtualDub или его вилку, чем вы можете включить опцию «VirtualDub Hack»
x264vfw [предупреждение]: -вы можете включить «Файл» выход режим
x264vfw [предупреждение]: -вы можете включить опцию 'Zero Latency'
Я нашел это VirtualDub Hack, но тогда я не использую Virtual Dub. Я не уверен, что означает режим вывода файлов и нулевая латентность.
Я думаю, что проблема связана с кодеком, поскольку, когда я перехожу к использованию другого кодека, все работает нормально. Я использую C# и emgu, но я не думаю, что там проблема.
EDIT
В случае код помогает
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);
}
Я думаю, что использование контейнера avi с X264 может стать причиной некоторых проблем – sav