/// <summary> /// Get next audio/video frame from input /// </summary> /// <returns>Frame buffer for next audio and video frame. NULL if end of file</returns> public FrameBuffer NextFrame() { frame.SampleTime = (long)(timestampSec * TICKS_PER_SECOND); bool haveVideoBuffer = false; bool haveAudioBuffer; if (videoFrameReader != null && videoFrameReader.Read()) { frame.VideoBuffer = videoFrameReader.GetFrame(); haveVideoBuffer = (frame.VideoBuffer != null); } haveAudioBuffer = wavFile.NextSample(frame.AudioBuffer); timestampSec += frameDurationSec; return((haveVideoBuffer || haveAudioBuffer) ? frame : null); }
public static Bitmap GetFrame(string videoPath, double frameTime) { using (var videoFrameReader = new VideoFrameReader(videoPath)) { if (frameTime > 0) { videoFrameReader.Seek(frameTime); } //videoFrameReader.SetFrameWidth(300); if (videoFrameReader.Read()) { return(videoFrameReader.GetFrame()); } return(GetErrorFrame(videoFrameReader.Width, videoFrameReader.Height, "Reading frame failed")); } }
private void btnGenerateFrame_Click(object sender, EventArgs e) { //string path = @"F:\Grapics\video.mp4"; string path = txtSource.Text; //Get video path from source path using (var videoFrameReader = new VideoFrameReader(path)) { if (videoFrameReader.Read()) //Only if frame was read successfully { var resultCount = videoFrameReader.FrameRate * videoFrameReader.Duration.TotalSeconds; progressBar.Maximum = (int)resultCount; // set maximum value of progress bar int i = 1; foreach (var frame in videoFrameReader) { progressBar.Value += 1; // increement progess bar value using (frame) //save generated frame { frame.Save(@$ "F:\Grapics\Frame\Frame{i}.jpg", ImageFormat.Jpeg);