翻譯|使用教程|編輯:胡濤|2022-12-16 16:22:39.687|閱讀 201 次
概述:本教程介紹如何創建使用 LEADTOOLS SDK 將圖像轉換為視頻的 C# Windows 控制臺應用程序。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
LeadTools是一包集合集合集合,用于用于文檔,醫療,成像和和多媒體多媒體整合到桌面桌面,,服務器服務器,,平板平板電腦電腦,,,網絡網絡網絡網絡網絡網絡和方案方案方案方案,OCR,OMR,表單識別,Pdf,Pdf,打印獲,歸檔,注釋,注釋和顯示。領先處理技術技術
本教程介紹如何創建使用 LEADTOOLS SDK 將圖像轉換為視頻的 C# Windows 控制平臺應用程序。
概要 | |
---|---|
概論 | 本教程介紹如何使用 LEADTOOLS 多媒體 SDK 技術在 C# Windows 控制平臺應用程序中從多個圖形創建視頻 |
完成時間 | 30分鐘 |
視覺工作室項目 | |
平臺 | Windows C# 控制平臺應用程序 |
集成開發環境 | 視覺工作室 2017、2019 |
開發許可 | 領導工具 |
用另一種語言考試 |
|
在使用文件查看器轉換文件 - C# .NET Core教程之前,通過查看添加引用和設置許可證明教程熟悉創建項目的基本步驟。
教程中創建的項目副本開始。如果您沒有該項目,請點擊該教程中的步驟創建它。
所需要的參考取決定于項目的目標的。可以通過本地DLL引用添加引用。
本教程需要以下本地DLL,它們位于<INSTALL_DIR>\LEADTOOLS22\Bin\Dotnet4\x64:
還需要下面非LEADTOOLS DLL:
具有特定功能所需要的DLL的完整列表,請參閱。
不同的SDK 功能需要不同的引用。有完整的列表,請參考。
設置許可證文件許可證解鎖需功能。它必須調用任何工具數之前設置。。。有關有關有關,包括信息信息信息信息信息信息。。。。。。。。
有兩種類型的運行時許可以證明:
筆記
添加LEADTOOLS NuGet引用和設置許可在添加引用和設置許可教程中有更詳細的介紹。
創建項目、添加參考和設置許可以證明后,就可以開始編寫代碼了。
在解決方案資源管理器中,打開Program.cs。在程序類中,將以下語句添加到using頂部的塊中:
【C#】
// 在頂部使用塊 使用系統; 使用系統文本; 使用 Leadtools; 使用 Leadtools.Codecs; 使用 Leadtools.Barcode; 使用 System.IO;
seTResolution(),getBitMapsize(Bitmap BMP)和和和和和方法方法seTSampletime(MediaSample MS,Long Frameno,Double AvgTimePerframe)。 、獲取位置圖大小和設置采集時間。
【C#】
靜態無效 SetResolution(RasterImage 圖像) { 如果 (image.BitsPerPixel != 24) { ColorResolutionCommand cmd = new ColorResolutionCommand(); cmd.BitsPerPixel = 24; cmd.Mode = ColorResolutionCommandMode.InPlace; cmd.運行(圖像); } } static int GetBitmapSize(位圖 bmp) { int BytesPerLine = ((bmp.Width * 24 + 31) & ~31) / 8; 返回 BytesPerLine * bmp.Height; } static void SetSampleTime(MediaSample ms, long frameNo, double AvgTimePerFrame) { 雙倍時間開始; 雙倍時間結束; timeStart = frameNo * AvgTimePerFrame; timeEnd = (frameNo + 1) * AvgTimePerFrame; //計算timeStart的高低部分 ms.SetTime((長)timeStart, (long)timeEnd); }
在方法調用后Program.cs添加一個新方法調用并生成在方法中調用它。添加以下代碼以將給定文件中的圖像轉換為視頻。MainSetLicense();
靜態無效生成() { // 創建示例源對象 SampleSource smpsrc = new SampleSource(); ConvertCtrl convertCtrl = new ConvertCtrl(true); // 創建一個新的媒體類型包裝器 媒體類型 mt = new MediaType(); string sourceDirectory = @"C:\LEADTOOLS22\Resources\Images"; string outputFile = @"C:\LEADTOOLS22\Resources\Images\Video-Result.avi"; 雙 fps = 5.0;//每秒幀數 位圖 bmp = new Bitmap(800, 600, PixelFormat.Format24bppRgb); 雙 AvgTimePerFrame = (10000000 / fps); string[] files = Directory.GetFiles(sourceDirectory, "*.jpg"); // 設置類型為 24 位 RGB 視頻 mt.Type = Constants.MEDIATYPE_Video; mt.SubType = Constants.MEDIASUBTYPE_RGB24; // 設置格式 mt.FormatType = Constants.FORMAT_VideoInfo; VideoInfoHeader vih = new VideoInfoHeader(); int bmpSize = GetBitmapSize(bmp); // 設置視頻信息頭 vih.bmiHeader.biCompression = 0; // BI_RGB vih.bmiHeader.biBitCount = 24; vih.bmiHeader.biWidth = 800; vih.bmiHeader.biHeight = 600; vih.bmiHeader.biPlanes = 1; vih.bmiHeader.biSizeImage = bmpSize; vih.bmiHeader.biClrImportant = 0; vih.AvgTimePerFrame.lowpart = (int)AvgTimePerFrame; vih.dwBitRate = (int)(bmpSize * 8 * fps); mt.SetVideoFormatData(vih, null, 0); // 設置匹配位圖大小的固定大小樣本 mt.SampleSize = bmpSize; mt.FixedSizeSamples = true; // 分配源媒體類型 smpsrc.SetMediaType(mt); // 不要設置壓縮器 convertCtrl.VideoCompressors.MCmpMJpeg.Selected = true; // 分配轉換器源 convertCtrl.SourceObject = smpsrc; // 設置輸出文件名 convertCtrl.TargetFile = outputFile; convertCtrl.TargetFormat = TargetFormatType.AVI; convertCtrl.StartConvert(); 詮釋我= 0; 位圖數據 bmpData; byte[] a = new byte[bmpSize]; 矩形 rect = new Rectangle(0, 0, bmp.Width, bmp.Height); 使用 (RasterCodecs 編解碼器 = new RasterCodecs()) { foreach(文件中的字符串 pageFileName) { 使用 (RasterImage image = codecs.Load(pageFileName)) { 設置分辨率(圖像); // 將加載的圖像重新調整為 Bitmap 的大小 SizeCommand sizecmd = new SizeCommand(); sizecmd.Width = bmp.Width; sizecmd.Height = bmp.Height; sizecmd.Run(圖片); ImageIncompatibleReason 原因 = RasterImageConverter.TestCompatible(image, true); PixelFormat pf = RasterImageConverter.GetNearestPixelFormat(圖像); 如果(原因!= ImageIncompatibleReason.Compatible) { RasterImageConverter.MakeCompatible(image, pf, true); } bmp = (位圖)RasterImageConverter.ChangeToImage(圖像, ChangeToImageOptions.ForceChange); // 位圖在左下方 bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); MediaSample ms = smpsrc.GetSampleBuffer(30000); ms.SyncPoint = true; bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, bmp.PixelFormat); Marshal.Copy(bmpData.Scan0, a, 0, bmpSize); bmp.UnlockBits(bmpData); ms.SetData(bmpSize, a); SetSampleTime(ms, i, AvgTimePerFrame); smpsrc.DeliverSample(1000, 毫秒); 我++; } } bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); bmpData = null; smpsrc.DeliverEndOfStream(1000); 系統.Threading.Thread.Sleep(1); MessageBox.Show("完成"); } }
按F5或選Debug -> Start Debugging運行項目目。
如果步驟正確,應用程序會運行并從<INSTALL_DIR>\LEADTOOLS22\Resources\Images目錄中收集所有JPEG文件,并從靜止圖像創建AVI視頻。
以上方便是從靜止圖像創作視頻 ,如果您還有其他疑問,歡迎咨詢我們或者加入我們的官方技術交流群。
歡迎下載|體驗更多LEADTOOL產品
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn