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

Screenshot_2015-07-18-13-45-20
https://play.google.com/store/apps/details?id=com.panasonic.avc.cng.imageapp   這軟體跟相機之間到底是如何通訊所以稍微摸一下,其實如果有API介面開放出來,有不少好處,只是看你想不想得到應用,讓我想到一塊是空拍,除此外還有不少有趣應用(諸如與arduino透過wifi互動,利用arduino的感測器做一些特殊釋放條件的快門),有空再談,回到正題用了下面這套軟體  Packet Capture

Screenshot_2015-07-18-13-44-09

https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture  

的確有抓到ImageAPP這軟體的運作封包  

Screenshot_2015-07-18-13-42-45

Screenshot_2015-07-18-13-42-53

Screenshot_2015-07-18-13-42-59

大概看看後,是未經加密的資訊內容,也沒有啥特殊編碼,純粹就是一般 http 的傳輸協定在傳遞 (所以GX7內建了一套最簡易的HTTP SERVER無誤,跑的是cgi),意思是說透過這些網址的呼叫和參數傳遞,第三方軟體也可以用同樣的方式去運作,驗證最快的當是開啟google chrome連上gx7的http server,打網址try try看.......方法大致上也不複雜....

首先開啟gx7的wifi連接功能接著電腦要裝有無線網卡,並且連接gx7的無線網路,

1  

這樣電腦跟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影片

 

 

    全站熱搜

    baxermux 發表在 痞客邦 留言(1) 人氣()