UPDATE 07/19 DEMO清晰版
GH3版本找到相關討論資源 http://www.personal-view.com/talks/discussion/6703/control-your-gh3-from-a-web-browser-now-with-video-
別人的研究專案 https://code.google.com/p/iunxtio/ (java版本,支援 G6, GH3, GX7, and GH4 )
後來大概了解,除了liveview即時影像走udp mjpeg在傳送,其他的部分都滿好處理的,多數是http協定和method.
==
現在很多相機都可以透過WIFI跟手機連線,然後透過APP遠端遙控操作相機,並且有些官方還有釋出SDK給開發者做更多軟體的應用,即使沒有官方支援,私下也可能有第三方研究整理出來,不過Panasonic的相機雖然近年來都加入了wifi連線功能,但就是還缺SDK釋出這塊,不確定是我沒google到,但大概找找資訊,我找不到,自己也沒特別的目標需要這應用,就沒特別鑽研這部分了.
前些日子看到手機上有類似抓封包的軟體,純粹只是好奇想看看手機跟gx7連線後,ImageAPP
https://play.google.com/store/apps/details?id=com.panasonic.avc.cng.imageapp 這軟體跟相機之間到底是如何通訊所以稍微摸一下,其實如果有API介面開放出來,有不少好處,只是看你想不想得到應用,讓我想到一塊是空拍,除此外還有不少有趣應用(諸如與arduino透過wifi互動,利用arduino的感測器做一些特殊釋放條件的快門),有空再談,回到正題用了下面這套軟體 Packet Capture
https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture
的確有抓到ImageAPP這軟體的運作封包
大概看看後,是未經加密的資訊內容,也沒有啥特殊編碼,純粹就是一般 http 的傳輸協定在傳遞 (所以GX7內建了一套最簡易的HTTP SERVER無誤,跑的是cgi),意思是說透過這些網址的呼叫和參數傳遞,第三方軟體也可以用同樣的方式去運作,驗證最快的當是開啟google chrome連上gx7的http server,打網址try try看.......方法大致上也不複雜....
首先開啟gx7的wifi連接功能接著電腦要裝有無線網卡,並且連接gx7的無線網路,
這樣電腦跟gx7的網路連線就達成了,再接下來就可以透過網址的呼叫來進行相機操作,不過開始用時,最先的步驟是跟相機註冊和通知,底下是範例
http://192.168.54.1:60606/F02765BACACE/Server0/ddd
這邊走RESTFUL API風格,port走60606...之後都是一般GET傳VALUE的一般request型態api而port就一般的80
GX7回傳
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:pana="urn:schemas-panasonic-com:pana" xmlns:pssav="urn:schemas-panasonic-com:pssav"> <specVersion> <major>1</major> <minor>0</minor> </specVersion> <device> <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType> <friendlyName>GX7-BACACE</friendlyName> <manufacturer>Panasonic</manufacturer> <modelName>LUMIX</modelName> <modelNumber>DMC-GX7</modelNumber> <modelDescription></modelDescription> <serialNumber></serialNumber> <modelURL></modelURL> <manufacturerURL></manufacturerURL> <UDN>uuid:4D454930-0100-1000-8000-F02765BACACE</UDN> <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">M-DMS-1.50</dlna:X_DLNADOC> <pana:X_AdditionalFunction>CPRemoteView</pana:X_AdditionalFunction> <pana:X_FirmVersion>0.A0</pana:X_FirmVersion> <pana:X_CamCategory>MirrorlessILC</pana:X_CamCategory> <pssav:X_PSS_VER>PSS-1.00</pssav:X_PSS_VER> <pssav:X_PSS_CHK>FBB2A0D75FBB41AEAA99BFBC1E9DB40ACBC73B79</pssav:X_PSS_CHK> <pssav:X_PSS_MN>DMC-GX7</pssav:X_PSS_MN> <serviceList> <service> <serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType> <serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId> <SCPDURL>http://192.168.54.1:60606/Server0/CDS_SCPD</SCPDURL> <controlURL>http://192.168.54.1:60606/Server0/CDS_control</controlURL> <eventSubURL>http://192.168.54.1:60606/Server0/CDS_event</eventSubURL> </service> <service> <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType> <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId> <SCPDURL>http://192.168.54.1:60606/Server0/CMS_SCPD</SCPDURL> <controlURL>http://192.168.54.1:60606/Server0/CMS_control</controlURL> <eventSubURL>http://192.168.54.1:60606/Server0/CMS_event</eventSubURL> </service> </serviceList> </device> </root> |
裡頭最重要的是 4D454930-0100-1000-8000-F02765BACACE 這數值.....要再帶入第二個request
http://192.168.54.1/cam.cgi?mode=accctrl&type=req_acc&value=4D454930-0100-1000-8000-F02765BACACE&value2=DMC-CM1
至於它的回傳就不重要了......
接著進入倒 live view 狀態
http://192.168.54.1/cam.cgi?mode=camcmd&value=recmode
最後是拍照
http://192.168.54.1/cam.cgi?mode=camcmd&value=capture
這中間ImageAPP官方軟體其實還有作很多request動作,主要是取得機身狀態或是一些資訊的要求....不是很重要,目前對API也還沒研究和整理得很多,還缺像是照片檔案傳遞.相機live view畫面傳送.拍照參數設定.對交選擇等等....不過由於內容無加密,操作應用形式又是以非常普通的http request在跑,開發者要自行研究整理並不困難,有時間再來看看好了.
最後附上 封包紀錄 與操作demo影片
留言列表