BLOG版本 http://baxermux.pixnet.net/blog/post/42370510

現在很多相機都可以透過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影片



 


 

文章關鍵字
erspicu wrote:
BLOG版本 http...(恕刪)

蠻有趣的,先佔個沙發,謝謝分享!

請問是否有實驗出如何上傳影像?

有辦法指定無線網卡只連一個wifi來源嗎?

打鐵匠 wrote:
蠻有趣的,先佔個沙...(恕刪)


網卡要連哪個WIFI來源,可以在PC上自己指定就好.
至於影像上傳到PC,這塊我還沒摸...

應該是說這只是帶個頭釣魚,看看後續還有沒有人投入整理研究..
至於我的話因為暫時沒有強烈的應用動機在,所以只是淺淺摸著兼玩..
當然有時間的話,多少會再多看看,有更多心得會再整理.
打鐵匠 wrote:
請問是否有實驗出如何上傳影像? ...(恕刪)


剛看一下...不難耶....
但因為有用到特殊的request method,所以沒辦法單用chrome...
在截取檔案清單那部分...
但清單拿到後,要把檔案下載,就一個步驟,http的get download而已.

不過我比較好奇的是,liveview影像是怎樣傳到手機上的...
目前抓封包沒抓到這塊..怪

查了一下後是udp發送的東西...難怪抓不到...

後來發現有人家第三方的project
https://code.google.com/p/iunxtio/

有興趣就慢慢看吧
erspicu wrote:
剛看一下...不難...(恕刪)

感謝提供,慢慢再來品味,甘溫!
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!