ååã®ããããïŒãŒãããæ§ç¯ãã C# éçºç°å¢
ãã®ããŒã«ã¯ããç¥äººYouTuberããâãããªãœãããæ¬²ããâãšèšãããŠäœãå§ããããã®ã§ãããç§èªèº«ã æ £ããŠããªãèšèªã§ããC#ãéžæããŸããã
- Visual Studio ã®ã€ã³ã¹ããŒã«
- .NET Framework ã®éžå®
- NuGet ããã±ãŒãžã®å°å ¥
- ffmpeg ã®ååŸæ¹æ³ã®æ€èš
- LibVLC ã® DLL/Plugins ã®æ§æç¢ºèª
ãããŠã³ãŒãã®èšè¿°ãã¹ãŠããçæAIïŒCopilotïŒã«ããã³ããã§æç€ºããŠæ§ç¯ãããšããç¹ãæ¬èšäºã®ãã€ã³ãã§ãã
éçºç°å¢ã®æ§ç¯
ð 䜿çšããç°å¢
- OSïŒWindows 11
- CPUïŒRyzen 5 7500F
- GPUïŒNVIDIA RTX4060 Ti 8GB
- RAMïŒ32GB
- IDEïŒVisual Studio 2022
- ãããžã§ã¯ãïŒWinForms ã¢ããªïŒ.NET Framework 4.8ïŒ
- ã©ã€ãã©ãªïŒ
LibVLCSharp.WinForms
,ffmpeg.exe
ïŒå¥éååŸïŒ
ð ãããžã§ã¯ãæ§é
ãããžã§ã¯ãå㯠filebunkatsu
(ãããã«é©åœãªååã«ãããããããããŸãã)ãæ§æã¯æ¬¡ã®ãããªã·ã³ãã«ãªãã®ïŒ
filebunkatsu/
ââ Form1.csïŒUIãšããžãã¯ïŒ
ââ Form1.Designer.csïŒUIå®çŸ©ïŒ
ââ Program.csïŒèµ·åãšã³ããªïŒ
ââ bin/Release/ïŒãã«ãåºåïŒ
ââ libvlc/ïŒå€éšäŸåãã¡ã€ã«çŸ€ïŒ
LibVLCãšffmpeg㯠DLLã exeãæå®ã®ãã©ã«ãã«é
眮ããã ãã
ã€ã³ã¹ããŒã«ã¯äžèŠã§ãã
NuGet ã§ã©ã€ãã©ãªãå°å ¥ãã
LibVLCSharp 㯠NuGet çµç±ã§å°å ¥ããŸããVisual Studio äžã§ã®æé ã¯ä»¥äžã®éãïŒ
- ãããžã§ã¯ããå³ã¯ãªã㯠â ãNuGet ããã±ãŒãžã®ç®¡çã
- æ€çŽ¢æ¬ã«
LibVLCSharp.WinForms
ãšå ¥å - ããŒãžã§ã³ã確èªãã€ã€ã€ã³ã¹ããŒã«
ä»ã«ãå¿ èŠã«å¿ããŠä»¥äžã® DLL ãäžç·ã«å°å ¥ãããŸãïŒ
LibVLCSharp.dll
LibVLCSharp.WinForms.dll
ãããã¯ãã«ãåŸ bin\Release
ãã©ã«ãã«åºåãããé
åžå¯Ÿè±¡ã«ããªããŸãã
ffmpeg ã®ååŸæ¹æ³ïŒçæAIãæããŠãããæçã«ãŒã
ffmpeg ã¯å€éšå®è¡ãã¡ã€ã«ã§ãäºåã«ååŸããŠããå¿ èŠããããŸããCopilotã«ãffmpeg.exe ã®ææ°ãèªåã§ååŸãããããšäŒãããšããããããªã³ãŒããè¿ã£ãŠããŸããã
string url = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip";
using (var client = new WebClient())
{
client.DownloadFile(url, zipPath);
}
ZipFile.ExtractToDirectory(zipPath, ffmpegDir);
çµæïŒ
- â ZIPãã¡ã€ã«ãDLããŠèªåã§å±é
- â
ffmpeg.exe
ãæå®ã®ãã©ã«ãã«ã³ã㌠- â
ffmpeg/
ãã©ã«ãã®äžã«åºåæºåå®äºïŒ
å®ã¯ãã®éšåãC# ã®ããŒãžã§ã³ã 7.3 ã§
using var
ã«ãšã©ãŒãåºããããAIã«ãC# 7.3 察å¿ã§æžãçŽããŠããšæç€ºããã ãã§ãããã¯åŒã«ä¿®æ£ããŠãããŸããã
LibVLC ã®æ§æ
LibVLC 㯠DLLã ãã§ã¯å®çµããŸãããVLCæ¬äœãã以äžã®ãã¡ã€ã«ãå¿ èŠã§ãïŒ
libvlc.dll
libvlccore.dll
-
plugins/
ãã©ã«ãïŒé³å£°ã»æ ååŠçã«å¿ èŠïŒ
Copilotã«ãVLCãDLLã§äœ¿ãã«ã¯äœãå¿ èŠïŒããšèããçµæãVLCå ¬åŒãµã€ãããZIPçãDLããŠè§£åããæ¹æ³ãå§ããŠãããŸããã
æ§æäŸïŒ
libvlc/
ââ libvlc.dll
ââ libvlccore.dll
ââ plugins/
ââ audio_output/
ââ video_output/
ââ codec/
ããã libvlc/
ãã©ã«ãã«ãŸãšããŠãexeãšäžç·ã«ZIPåããã°é
åžæºåå®äºã§ãã
.NET Framework 4.8 ãéžãã çç±
.NET Coreã§ãéçºå¯èœã§ãããä»å㯠LibVLCSharp.WinForms
ã®å®å®æ§ãš ffmpeg
ã®é£æºå®çžŸãèæ
®ãã.NET Framework 4.8 ã䜿çšããŸããã
Copilotã«ããã©ã¡ããé©ããŠãããããšèããŠã¿ããšã以äžã®ãããªçç±ãæããŠãããŸããïŒ
- LibVLCSharp ã®å®å®åäœã«ã¯ WinForms/.NET Framework ã®çµã¿åãããçŸæç¹ã§æå©
- ffmpeg ã®å€éšåŒã³åºãã«ãç¹å¥ãªå¶éãå°ãªã
çµæãšããŠããã«ãåŸãã®ãŸãŸ .exe
é
åžå¯èœãªåœ¢åŒã«ãªã£ãããšã§ãç¥äººã«ãæž¡ãããããªããŸããã
UIåæèšèšïŒVisual Studioã® Form Designer
UIèšèšã¯ Form1.Designer.cs
ã«ã³ãŒããšããŠæžããŸããããã¡ãããæå㯠Form Designer ã䜿ã£ãŠé
眮ããŠãOKã
ãã ã现ããã¬ã€ã¢ãŠã調æŽïŒãã¿ã³ã®äžŠã³ããµã€ãºãªã©ïŒã¯ Copilotã«ä»»ããŠæ¬¡ã®ããã«æç€ºããŸããïŒ
ð¬ãåç»ãéããã¿ã³ãæäžæ®µãèªã¿èŸŒã¿ãã¡ã€ã«å衚瀺ããã®äžã«é 眮ããŠã
ð¬ãåçã»åæ¢ãã¿ã³ã朰ããŠãã®ã§äœçœã調æŽãããã
ð¬ãDataGridView ã®åé€ãã¿ã³ã«ã©ãã«åã衚瀺ãããªããä¿®æ£ããŠã
è¿ã£ãŠããã³ãŒãäžäŸïŒ
btnPlay.Location = new Point(20, 485); // â Yäœçœ®ãäžããŠæœ°ãåé¿
...
deleteButtonCol.HeaderText = "æäœ"; // â ã©ãã«è¡šç€ºè¿œå
ãäŒãããšããã®ã³ãŒãããç¬æã«è¿ããŠãããã®ã¯ AI ãªãã§ã¯ã
ã§ãããçæAIã«è§Šããããšãããæ¹ãªããåãããšæããŸããã
èªåã®æç€ºéãã«å¶åŸ¡ã§ãããã®ã®ãééã£ãŠããããšããããããã®ãŸãŸäŒããŠããå ŽåããããŸãã®ã§ã
åäœäžã€äžã€ã«å¯ŸããŠã®ãã¹ãã¯å¿
é ã§ãã
ãã«ããšå®è¡ãŸã§ã®æµã
宿ããã³ãŒãããã«ãããã«ã¯ïŒ
- Visual Studio äžéšã§ ãæ§æãâ
Release
ãéžæ - ã¡ãã¥ãŒ â [ãã«ã] â [ãœãªã¥ãŒã·ã§ã³ã®ãã«ã]
-
bin\Release\
ãã©ã«ãã«.exe
ãšäŸåDLL ãçæããã
ãã®ãšã泚æãã¹ãã¯ãReleaseæ§æã§ã®ãã«ããè¡ãããšãDebugã ãšæçµé åžã«äžåããªãã§ãã¯ãæ®ã£ãŠããŸããŸãã
Copilotããããã¢ããã€ã¹ïŒãUIã®åäœç¢ºèªã¯ Release ã¢ãŒãã§ãäžåºŠããŠãããšå®å¿ã§ããã
çæAIãæŽ»çšããéã®ãã€ã³ã
ä»åã®éçºã¹ã¿ã€ã«ã¯ãCopilotãšã®ãã¢éçºã§ããããã ããå®å šäŸåã§ã¯ãããŸããã
- èªåããäœãããããããèšèªåããŠããã³ããã§äŒãã
- è¿ã£ãŠããã³ãŒããèªãã§çè§£ãã
- å¿ èŠã«å¿ããŠèª¿æŽãã
ãããã 人éã®çè§£åãšAIã®è£å©åãçµã¿åãããããšã§ãæªç¥ã®èšèªã§ãã¹ã ãŒãºã«éçºãé²ããããŸããã
ãããã«ïŒç°å¢æ§ç¯ãæŽãã°ãããšã¯AIãšäžç·ã«å®è£ ããã ã
ãã®ç¬¬2åã§ã¯ãC#æªçµéšãªããããçæAIãšäºäººäžèã§ãããžã§ã¯ãã®åå°ãç¯ããæ§åã玹ä»ããŸããã
ãã€ã³ãã¯ä»¥äžã®éãã§ãïŒ
- Visual Studioã®ç°å¢ãæŽåããReleaseæ§æã«åãæ¿ãã
- LibVLCSharpã®å°å ¥ãš ffmpeg ã®ååŸãããã³ããæç€ºã§èªåå
- UIã®åºæ¬æ§æã¯ Designer.csïŒããã³ããã§å³å¯Ÿå¿
- C# 7.3ãžã®èšèªå¯Ÿå¿ãªã©ãçæAIã¯æè»ã«èª¿æŽããŠããã
ç¹ã«å°è±¡çã ã£ãã®ã¯ããã³ãŒããããŸããããªãããšäŒããã ãã§ãåå è§£æïŒä¿®æ£æžã¿ã³ãŒããŸã§äžåŒã§åºããŠããããšããç¹ã
ããã¯ãã¯ãâéçºè ãæ¯ããAIããŒã ã¡ã€ãâãšããååšã«ãªã£ãŠããŸãã
次åäºåïŒç¬¬3åãUIèšèšç·šã
次åã¯ãUIã®èŠãç®ãšæäœæ§ã«é¢ããèšèšæ¹éã«ã€ããŠæ·±æãããŸãã
- ãåç»ãéãããã¿ã³ã¯ã©ãã«çœ®ãã¹ãã
- ãã¡ã€ã«å衚瀺ãã·ãŒã¯ããŒã¯ã©ã䞊ã¹ããšçŽæçã
- DataGridView ã«ãåé€ããã¿ã³åãã©ã远å ããã
- ãŠãŒã¶ãŒäœéšãå£ããªãããã«ã©ããªããŒãžã³ã»ãµã€ãºèª¿æŽãå¿
èŠã
ð èŠãç®ãæŽããã ãã§ã¯ãªããâãŠãŒã¶ãŒã«ãšã£ãŠã©ãã ã䜿ãããããªããâãšããèŠç¹ãäžç·ã«è§£èª¬ããŠãããŸãã