Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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"));
            }
        }
Exemplo n.º 3
0
        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);