我正在編寫一個程序來將一些網絡攝像頭視頻保存到文件中。我正在使用在此處找到的x264編解碼器 x264X264捕獲視頻時出現錯誤信息
當我嘗試將幀寫入文件時,彈出此錯誤消息。
x264vfw [warning]:幾幀可能會丟失。方法來解決這個 :
x264vfw [警示]: - 如果您使用的VirtualDub或其叉比你能 啓用「VirtualDub的哈克」選項
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容器可能會造成一些麻煩 – sav