我需要一些幫助將筆記本電腦相機中的視頻保存到文件中。現在我使用代碼搜索視頻設備和pictureBox上的以前的視頻。 我試過用AVIFileWrite,但我失敗了。 如何使用VideoFileWriter實現我的目標?c#AForge.NET - 如何將視頻從相機保存到文件中
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Video.FFMPEG;
using System.IO;
using AForge.Video.VFW;
using System.Drawing.Imaging;
namespace VideoCapture
{
public partial class Form1 : Form
{
private FilterInfoCollection VideoCaptureDevices;
private VideoCaptureDevice FinalVideo;
public static Bitmap _latestFrame;
//private VideoFileWriter writer;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo VideoCaptureDevice in VideoCaptureDevices)
{
comboBox1.Items.Add(VideoCaptureDevice.Name);
}
comboBox1.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString);
FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
FinalVideo.Start();
}
void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap video = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = video;
//int width = 640;
//int height = 480;
//VideoFileWriter writer = new VideoFileWriter();
//writer.Open(@"c:\video.avi", width, height, 25, VideoCodec.Default, 1000000);
//for (int i = 0; i < 1000; i++)
//{
// writer.WriteVideoFrame(video);
//}
//writer.Close();
//Bitmap image = new Bitmap(width, height, PixelFormat.Format24bppRgb);
//writer.WriteVideoFrame(image);
//MessageBox.Show("jest");
}
private void button2_Click(object sender, EventArgs e)
{
if (FinalVideo.IsRunning)
{
FinalVideo.Stop();
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (FinalVideo.IsRunning == true) FinalVideo.Stop();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = "Device running..." + FinalVideo.FramesReceived.ToString() + " FPS";
}
}
}
由於IP攝像機沒有一個穩定的幀率和作家有沒有動態的FPS,你可以更好地使用VLC。 –