X264 Messaggio di errore durante l’acquisizione del video

Sto scrivendo un programma per salvare alcuni video della webcam in un file. Sto usando il codec x264 trovato qui x264

Quando provo a scrivere i frame su un file, viene visualizzato questo messaggio di errore. errore

x264vfw [warning]: Pochi fotogrammi probabilmente andrebbero persi. Modi per risolvere questo:

x264vfw [avvertimento]: -se usi VirtualDub o il suo fork di quanto tu possa abilitare l’opzione ‘VirtualDub Hack’

x264vfw [avvertimento]: -si può abilitare la modalità di output ‘File’

x264vfw [avvertimento]: -si può abilitare l’opzione ‘Zero Latenza’

Ho trovato questo VirtualDub Hack ma poi non sto usando virtual dub. Non sono sicuro di cosa significano la modalità di output File e la latenza zero.

Penso che il problema sia legato al codec poiché quando cambio ad usare un codec diverso, tutto funziona bene. Sto usando C # e emgu ma non penso che sia il problema.

MODIFICARE

Nel caso in cui il codice aiuti

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); } 

So che è un po ‘tardi ma ho capito. La soluzione (su Windows) è di impostare -1 invece di quattrocc del codec. Si apre una finestra di dialogo in cui è ansible scegliere un codec e se si sceglie x264wfv, c’è un pulsante di configurazione che consente di configurare tali opzioni (la latenza zero funziona per me). La prossima volta che il codec utilizzerà esattamente le stesse impostazioni, potrai eseguire il tuo programma con il codice fourcc.