2026年4月19日

AI超人之ONVIF Client Lab

前言:

最近興趣在寫這東西,想說這不是老黃曆了嗎,但沒關係,就自己用AI尻尻看。
目前進度約4~5成,還早,但這幾個有趣的過程可以貼。
ONVIF Client完全免費並開發友善的其實就SharpOnvif,最難得的是,作者目前非常熱血,更新頻率很高,支援的ONVIF Profile也非常完整,License是MIT,相當佛。

緣由:

我希望有個AOT-safe、License Free的ONVIF Client,C/C++或c#都可以,結果發現非常難找,C/C++幾乎沒有,原因是ONVIF官方網站與SOAP幾乎都推薦gSOAP,這是正確的,但gSOAP是雙授權,明言GPLv2/Commercial,產生的程式碼也是,要嘛付費給它解鎖,否則就是GPL,這種寫明授權的做法,就是開源商業化。
c#反而友善,Microsoft的svcutil沒有授權問題,但這個有年代了,使用的是依靠反射的WCF和XmlSerializer,設計聰明,但如果AOT-safe會更好。
於是,在繼mediasdk_h264/h265_parser之後,我讓Claude-Code嘗試看看。

成果:

過程:

我讓Claude-Code(GLM-5.1)分析SharpOnvif,然後實際用svcutil產生Reference.cs讓它分析和修改,發現這條路不太對。
接著我讓它用gSOAP Binary透過WDSL產生C/C++程式碼,然後發現,它產生的程式碼全都是GPL,並且官方網站寫明了授權方式。
我詢問WDSL到底是什麼?它跟我說了個xsd.exe工具(咦?)。
然後我想想,AI你為何要改生成的東西,能否自己用xsd工具產生Model,我們自己寫API?
然後我找到xsd.exe和xscgen,讓它分析xsd.exe和xscgen,讓它xscgen執行看看,試看看能不能用WSDL產生出Model,這些Model能不能用?
Claude-Code(GLM-5.1)在嘗試後非常篤定的跟我說,沒問題,Client加上去就可以了,而Client它會寫(儘管我還是讓它參考了SharpOnvif)。
然後它就寫好了。😲

雜談:

上面的過程像是念經😂,其實描述了我最近發現AI的互動方式有些變化(或者說新的用法?),AI分析程式碼的能力和速度遠比人類快得多,這可能是因為AST加上Model更強了的雙重因素,但目前的高階推理模型已經可以根據你給它的需求分析整個程式碼,並且給出它和你需要的部份,並且判斷和抽取出程式碼內容,這已經不是半年前給它一個專案,它給出專案概述和描述分析這麼簡單,而是它已經有能力判斷出這份東西裡面有沒有完成任務需要的內容,而且能夠篤定的跟我說有/沒有,可以/不可以,可行/不可行。
要知道一點,上面列出的,每一個都是一份完整專案和程式碼,資深工程師如果領域內的,要拆解可能也要一些時間,領域外的可能找入口就要2~3天,但AI已經能夠根據你給的需求,分析這個專案程式碼是否有可以用的程式,或者直接執行並分析執行結果,搭配程式碼分析,給出如何做?能否用?😲

AI超人之影像編/解碼器 (H264Parser, H265Parser)

 前言:

最近在寫H264和H265的硬體編碼解碼器程式。
發現在Linux選項不多,只有FFMpeg的libav、GStreamer,但我想找授權乾淨的(無GPL、Library GPL),並且支援VA-API的,於是就試著讓AI寫看看。

成果:


過程:

我要求Claude-Code(GLM-5.1)參考OneVPL(MediaSDK),並要求它直接抄OneVPL(MediaSDK),跟它說,它的授權是MIT,不用擔心,但你盡量不要自己實做,以它寫的為準,做法是,複製它的程式碼後,修剪。
最終完成品,就是成果的程式碼。

我在使用時,還有發現bug,所以我無法保證沒有bug,目前H265解碼時會間歇性出現灰畫面,但我在交叉使用ffplay時有些來源也會這樣,我還無法準確判斷是影像來源問題,還是它實做的有bug,但以完成度、穩定度來說,基本上沒問題。

雜談:

先前看到新聞說Claude Opus能夠參考並實做出程式語言編譯器,GLM-5.1雖然能力差一點,但基本能夠超越Opus的上一代,弱於這一代。
這次讓它直接參考並抄寫、改寫、修改OneVPL(MediaSDK),並且成功重構出mediasdk_h264_parser和mediasdk_h265_parser,以程式碼分析與修改能力而言,我認為能力已經超越我了,因為我自己看和分析,是無法做到的,要知道,OneVPL可以一路追朔到Intel IPP,裡面程式碼龐大且經過多年迭代 + 重構,加上是根據H264, H265 Spec. 實做的,基本上有特殊的Domain專業以及複雜的程式脈絡,但Claude-Code已經能夠分析、拆解,並根據功能抽取和改出需要的程式碼,再組出Library,非常強大。😲