Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Fall der Verwendung von AForge zur Implementierung der Kameraaufzeichnungsfunktion

C#-Fall der Verwendung von AForge zur Implementierung der Kameraaufzeichnungsfunktion

黄舟
黄舟Original
2017-09-21 11:29:014187Durchsuche

In diesem Artikel wird hauptsächlich der Beispielcode zum Aufrufen von AForge in C# zur Implementierung der Kameraaufzeichnung vorgestellt. Er ist sehr praktisch.

1: Laden Sie zuerst die Bibliotheksdatei herunter>>

Sie können auch die offizielle Website besuchen>>

Laden Sie den vollständigen Code dieses Tutorials herunter>>

Für die Ausgabe in MP4 ist die Verwendung von ffmpeg-bezogenen Dateien erforderlich. Die von mir gepackte Bibliothek wurde bereits mitgebracht. Die auf der offiziellen Website gefundenen Bibliotheken finden Sie in diesem Verzeichnis:

2: Fügen Sie diese Referenzen hinzu:

3: Zwei globale Variablen:


//用来操作摄像头
 private VideoCaptureDevice Camera = null;
 //用来把每一帧图像编码到视频文件
 private VideoFileWriter VideoOutPut = new VideoFileWriter();


 开始代码:
 //获取摄像头列表
var devs = new FilterInfoCollection(FilterCategory.VideoInputDevice);

//实例化设备控制类(我选了第1个)
Camera = new VideoCaptureDevice(devs[0].MonikerString);

//配置录像参数(宽,高,帧率,比特率等参数)VideoCapabilities这个属性会返回摄像头支持哪些配置,从这里面选一个赋值接即可,我选了第1个
Camera.VideoResolution = Camera.VideoCapabilities[0];

//设置回调,aforge会不断从这个回调推出图像数据
Camera.NewFrame += Camera_NewFrame;

//打开摄像头
Camera.Start();

//打开录像文件(如果没有则创建,如果有也会清空),这里还有关于
VideoOutPut.Open("E:/VIDEO.MP4", 
    Camera.VideoResolution.FrameSize.Width, 
    Camera.VideoResolution.FrameSize.Height, 
    Camera.VideoResolution.AverageFrameRate, 
    VideoCodec.MPEG4, 
    Camera.VideoResolution.BitCount);
给AForge输出图像数据的回调方法:
//图像缓存
private Bitmap bmp = new Bitmap(1, 1);

//摄像头输出回调
private void Camera_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
 //写到文件
 VideoOutPut.WriteVideoFrame(eventArgs.Frame);
 lock (bmp)
 {
  //释放上一个缓存
  bmp.Dispose();
  //保存一份缓存
  bmp = eventArgs.Frame.Clone() as Bitmap;
 }
}

Endcode:


   //停摄像头
   Camera.Stop();

   //关闭录像文件,如果忘了不关闭,将会得到一个损坏的文件,无法播放
   VideoOutPut.Close();

4: Änderung App.config, einige Dinge kompatibel mit net2.0:


<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <startup useLegacyV2RuntimeActivationPolicy="true">
 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
 </startup>
 <supportedRuntime version="v2.0.50727"/>
</configuration>

Sonst wird es so sein:

Das obige ist der detaillierte Inhalt vonC#-Fall der Verwendung von AForge zur Implementierung der Kameraaufzeichnungsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn