创建一个视频从静态图像,c#控制台

本教程展示了如何创建一个c# Windows控制台应用程序,它使用LEADTOOLS SDK将图片转换成视频。

概述
总结 本教程介绍了如何使用SDK LEADTOOLS多媒体技术来创建一个视频从多个图像在c188宝金博怎么下载# Windows控制台应用程序
完成时间 30分钟
Visual Studio项目 下载教程项目(4 KB)
平台 Windows c#控制台应用程序
IDE Visual Studio 2017中,2019年
开发许可 下载LEADTOOLS

所需的知识

熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前创建一个视频从静态图像,c#控制台教程。

创建项目并添加LEADTOOLS引用

从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。

的引用需要取决于项目的目的。可以通过当地添加引用DLL参考。

本教程需要以下地方dll,位于< INSTALL_DIR > \ LEADTOOLS21 \ Bin \ Dotnet4 \ x64:

以下Non-LEADTOOLS dll也要求:

为哪些dll的完整列表所需的特定功能,参考文件包含在您的应用程序

设置许可文件

许可打开所需的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可

有两种类型的运行时许可证:

请注意

添加LEADTOOLS当地DLL的引用和设置许可中会详细介绍添加引用和设置一个许可证教程。

设置分辨率,得到位图的大小,设置样品时间

与项目创建、添加引用,许可,可以开始编码。

解决方案资源管理器,打开Program.cs。在程序类,添加以下语句使用块顶部:

c#
/ /使用块使用系统;使用先;使用System.Drawing;使用System.Drawing.Imaging;使用System.Windows.Forms;使用System.Runtime.InteropServices;使用Leadtools;使用Leadtools.Codecs;使用Leadtools.Drawing;使用Leadtools.ImageProcessing;使用Leadtools.188宝金博怎么下载Multimedia;

添加三个新方法SetResolution (),GetBitmapSize位图(bmp),SetSampleTime (MediaSample女士、frameNo长、双AvgTimePerFrame)。这些方法将调用后,将图片转换成视频添加代码。添加以下代码来设置分辨率,得到位图的大小,设置采样时间。

c#
静态无效SetResolution (RasterImage图片){如果(图片。BitsPerPixel ! = 24){ColorResolutionCommand cmd =ColorResolutionCommand ();cmd。BitsPerPixel = 24;cmd。模式= ColorResolutionCommandMode.InPlace;cmd.Run(图片);}}静态intGetBitmapSize位图(bmp){intBytesPerLine = ((bmp。宽度* 24 + 31)& ~ 31)/ 8;返回BytesPerLine * bmp.Height;}静态无效SetSampleTime (MediaSample女士,frameNo,AvgTimePerFrame){timeStart;timeEnd;timeStart = frameNo * AvgTimePerFrame;timeEnd = (frameNo + 1) * AvgTimePerFrame;/ /计算高低timeStart的一部分ms.SetTime (()timeStart, ()timeEnd);}

将图片转换成视频

Program.cs添加一个新方法生成并调用它主要方法后SetLicense ();方法调用。添加以下代码来给定文件中的图片转换成视频。

c#
静态无效生成(){/ /创建示例源对象SampleSource smpsrc =SampleSource ();ConvertCtrl ConvertCtrl =ConvertCtrl (真正的);/ /创建一个新的媒体类型的包装器MediaType太=MediaType ();字符串sourceDirectory =@“C: \ LEADTOOLS21 \ Resources \图片”;字符串outputFile =@“C: \ LEADTOOLS21 \资源\ \ Video-Result.avi图像”;fps = 5.0;/ /帧每秒位图bmp =位图(800、600、PixelFormat.Format24bppRgb);AvgTimePerFrame = (10000000 / fps);字符串[]文件= Directory.GetFiles (sourceDirectory,“* . jpg”);/ /类型设置为24位RGB视频mt.Type = Constants.MEDIATYPE_Video;mt.SubType = Constants.MEDIASUBTYPE_RGB24;/ /设置格式mt.FormatType = Constants.FORMAT_VideoInfo;VideoInfoHeader vih =VideoInfoHeader ();intbmpSize = GetBitmapSize (bmp);/ /设置视频信息头vih.bmiHeader。biCompression = 0;/ / BI_RGBvih.bmiHeader。biBitCount = 24;vih.bmiHeader。biWidth = 800;vih.bmiHeader。biHeight = 600;vih.bmiHeader。双翼飞机= 1;vih.bmiHeader。biSizeImage = bmpSize;vih.bmiHeader。biClrImportant = 0;vih.AvgTimePerFrame。lowpart = (int)AvgTimePerFrame;vih。dwBitRate = (int)(bmpSize * 8 * fps);mt.SetVideoFormatData (vih,0);/ /设置固定大小的样本匹配位图的大小mt.SampleSize = bmpSize;mt.FixedSizeSamples =真正的;/ /分配源媒体类型smpsrc.SetMediaType (mt);/ /不设置一个压缩机convertCtrl.VideoCompressors.MCmpMJpeg。选择= true;/ /分配转换器源convertCtrl。SourceObject = smpsrc;/ /设置输出文件的名字convertCtrl。TargetFile = outputFile;convertCtrl。TargetFormat = TargetFormatType.AVI;convertCtrl.StartConvert ();int我= 0;BitmapData bmpData;字节[]a =字节[bmpSize];矩形矩形=矩形(0,0,bmp。宽度,bmp.Height);使用(RasterCodecs编解码器=RasterCodecs ()){foreach(字符串pageFileName文件){使用(RasterImage图像= codecs.Load (pageFileName)){SetResolution(图片);/ /用户加载图像位图的大小SizeCommand sizecmd =SizeCommand ();sizecmd。宽度= bmp.Width;sizecmd。身高= bmp.Height;sizecmd.Run(图片);ImageIncompatibleReason原因= RasterImageConverter.TestCompatible(图像,真正的);PixelFormat pf = RasterImageConverter.GetNearestPixelFormat(图片);如果(理由! = ImageIncompatibleReason.Compatible){RasterImageConverter。pf MakeCompatible(图片,真正的);}bmp = RasterImageConverter(位图)。ChangeToImage(图片、ChangeToImageOptions.ForceChange);/ /位图左下角bmp.RotateFlip (RotateFlipType.RotateNoneFlipY);MediaSample = smpsrc.GetSampleBuffer女士(30000);ms.SyncPoint =真正的;bmpData = bmp。LockBits(矩形、ImageLockMode。读写,bmp.PixelFormat);Marshal.Copy (bmpData。Scan0, 0 bmpSize);bmp.UnlockBits (bmpData);ms.SetData (bmpSize);SetSampleTime(女士,我,AvgTimePerFrame);smpsrc。DeliverSample女士(1000年);我+ +;}}bmp.RotateFlip (RotateFlipType.RotateNoneFlipY);bmpData =;smpsrc.DeliverEndOfStream (1000);System.Threading.Thread.Sleep (1);MessageBox.Show (“完成”);}}

运行该项目

按运行项目F5,或通过选择调试- >开始调试

如果是正确的步骤,应用程序运行和收集所有的JPEG文件< INSTALL_DIR > \ LEADTOOLS21 \ \图片资源目录,并创建一个AVI视频从静态图像。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。