2012年7月31日 星期二

Open DHCP Server


以下紀錄 Open DHCP Server 的使用心得。經過筆者測試,Windows XP 與 Windows 7 64bit皆可正常使用。

1. 軟體安裝
至 http://sourceforge.net/projects/dhcpserver/ 可以下載程式(此時最新版為V1.50)
下載後,雙擊程式後會自動安裝至 C:\OpenDHCPServer 或是 C:\Program Files\OpenDHCPServer

ONVIF -- Test Tool 11.12 測試環境設定注意事項


執行 ONVIF 11.12 測試工具時,幾點注意事項整理如後

  • Static IP 測試,會將IP位址為目前IP位址+1,例如:原始的IP位址為 192.168.0.30, 設定後的位址會是 192.168.0.31。因此設定IPCam位址時,需要注意區域網路上不能夠存在有相同或相鄰的位址。
  • 因為測試過程會使用 DHCP 取得新的 IP Address,DHCP取得的位址與靜態設定的位址可能屬於不同網域,例如:static ip=192.168.0.90, DHCP IP=192.168.82.90因此測試工具機器可能需要設定兩組IP位址。否則 DHCP 測試之後便會無法正常運行。
  • 需要設定Events,包含event topic 與 Topic namespaces
  • 每台IPCam處理訊息與重新啟動的時間不同,因此需要針對各機器的特性設定不同的timeout 值。
  • 執行 Test Tool時,要記得使用administrator的權限

ONVIF -- Test Tool 與 Core spec 版本對應關係

Below list the latest version of ONVIF test tool.

2012年7月29日 星期日

ONVIF -- Genetec NVR add a new device


Genetec NVR version SR1 新增IPCame的流程(使用 ONVIF 規範)

|Time     | 192.168.0.169                         |
|         |                   | 192.168.0.30      |                   
|3.138    |         GetNetworkInterface           |SOAP/ONVIF: GetNetworkInterfaces
|         |(49575)  ------------------>  (80)     |
|3.215    |         Fault     |                   |SOAP/ONVIF: Fault
|         |(49575)  <------------------  (80)     |

ONVIF -- Milestone NVR add a new device


MileStone NVR 新增 IPCam 的流程

|Time     | 192.168.0.241                         | 192.168.0.30                          |
|         |                   | 192.168.0.240     |                   
|9.148984 |         HTTP/1.1 200 OK               |                   |HTTP/XML: HTTP/1.1 200 OK 
|         |(2869)   ------------------>  (1212)   |                   |
|24.187365|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1218)   ------------------>  (80)     |
|24.432826|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1218)   <------------------  (80)     |
|24.437700|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1219)   ------------------>  (80)     |
|24.577916|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1219)   <------------------  (80)     |
|34.201754|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1249)   ------------------>  (80)     |
|34.339486|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1249)   <------------------  (80)     |
|34.342224|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1250)   ------------------>  (80)     |
|34.496421|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1250)   <------------------  (80)     |
|35.033815|         HTTP/1.1 200 OK               |                   |HTTP/XML: HTTP/1.1 200 OK 
|         |(2869)   ------------------>  (1251)   |                   |
|44.217232|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1254)   ------------------>  (80)     |
|44.416000|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1254)   <------------------  (80)     |
|44.426606|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1255)   ------------------>  (80)     |
|44.574057|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1255)   <------------------  (80)     |
|48.782766|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1256)   ------------------>  (80)     |
|49.133063|                   |         GetCapabilitiesResp           |SOAP/ONVIF: GetCapabilitiesResponse
|         |                   |(1256)   <------------------  (80)     |
|49.144355|                   |         GetNetworkProtocols           |SOAP/ONVIF: GetNetworkProtocols
|         |                   |(1257)   ------------------>  (80)     |
|49.364338|                   |         GetNetworkProtocols           |SOAP/ONVIF: GetNetworkProtocolsResponse
|         |                   |(1257)   <------------------  (80)     |
|49.374824|                   |         GetDeviceInformatio           |SOAP/ONVIF: GetDeviceInformation
|         |                   |(1258)   ------------------>  (80)     |
|49.576957|                   |         GetDeviceInformatio           |SOAP/ONVIF: GetDeviceInformationResponse
|         |                   |(1258)   <------------------  (80)     |
|49.583928|                   |         GetVideoEncoderConf           |SOAP/ONVIF: GetVideoEncoderConfigurationOptions
|         |                   |(1259)   ------------------>  (80)     |
|49.935724|                   |         GetVideoEncoderConf           |SOAP/ONVIF: GetVideoEncoderConfigurationOptionsResponse
|         |                   |(1259)   <------------------  (80)     |
|49.944473|                   |         GetVideoEncoderConf           |SOAP/ONVIF: GetVideoEncoderConfigurations
|         |                   |(1261)   ------------------>  (80)     |
|50.149230|                   |         GetVideoEncoderConf           |SOAP/ONVIF: GetVideoEncoderConfigurationsResponse
|         |                   |(1261)   <------------------  (80)     |
|50.154842|                   |         GetVideoSources               |SOAP/ONVIF: GetVideoSources
|         |                   |(1262)   ------------------>  (80)     |
|50.299977|                   |         GetVideoSourcesResp           |SOAP/ONVIF: GetVideoSourcesResponse
|         |                   |(1262)   <------------------  (80)     |
|50.305202|                   |         GetImagingSettings            |SOAP/ONVIF: GetImagingSettings
|         |                   |(1263)   ------------------>  (80)     |
|50.507408|                   |         GetImagingSettingsR           |SOAP/ONVIF: GetImagingSettingsResponse
|         |                   |(1263)   <------------------  (80)     |
|50.515345|                   |         GetOptions|                   |SOAP/ONVIF: GetOptions
|         |                   |(1264)   ------------------>  (80)     |
|50.722685|                   |         GetOptionsResponse            |SOAP/ONVIF: GetOptionsResponse
|         |                   |(1264)   <------------------  (80)     |
|50.735629|                   |         GetAudioEncoderConf           |SOAP/ONVIF: GetAudioEncoderConfigurationOptions
|         |                   |(1265)   ------------------>  (80)     |
|50.952790|                   |         GetAudioEncoderConf           |SOAP/ONVIF: GetAudioEncoderConfigurationOptionsResponse
|         |                   |(1265)   <------------------  (80)     |
|50.955850|                   |         GetAudioEncoderConf           |SOAP/ONVIF: GetAudioEncoderConfigurations
|         |                   |(1266)   ------------------>  (80)     |
|51.218220|                   |         GetAudioEncoderConf           |SOAP/ONVIF: GetAudioEncoderConfigurationsResponse
|         |                   |(1266)   <------------------  (80)     |
|51.227107|                   |         GetAudioSourceConfi           |SOAP/ONVIF: GetAudioSourceConfigurations
|         |                   |(1267)   ------------------>  (80)     |
|51.448708|                   |         GetAudioSourceConfi           |SOAP/ONVIF: GetAudioSourceConfigurationsResponse
|         |                   |(1267)   <------------------  (80)     |
|51.456690|                   |         GetProfiles                   |SOAP/ONVIF: GetProfiles
|         |                   |(1268)   ------------------>  (80)     |
|51.743706|                   |         GetProfilesResponse           |SOAP/ONVIF: GetProfilesResponse
|         |                   |(1268)   <------------------  (80)     |
|51.746977|                   |         GetRelayOutputs               |SOAP/ONVIF: GetRelayOutputs
|         |                   |(1269)   ------------------>  (80)     |
|51.926615|                   |         GetRelayOutputsResp           |SOAP/ONVIF: GetRelayOutputsResponse
|         |                   |(1269)   <------------------  (80)     |
|51.947577|                   |         GetNetworkInterface           |SOAP/ONVIF: GetNetworkInterfaces
|         |                   |(1270)   ------------------>  (80)     |
|52.130577|                   |         GetNetworkInterface           |SOAP/ONVIF: GetNetworkInterfacesResponse
|         |                   |(1270)   <------------------  (80)     |
|54.231426|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1272)   ------------------>  (80)     |
|54.344283|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1272)   <------------------  (80)     |
|54.350844|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1273)   ------------------>  (80)     |
|54.505541|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1273)   <------------------  (80)     |
|64.246181|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1276)   ------------------>  (80)     |
|64.352016|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1276)   <------------------  (80)     |
|64.365884|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1277)   ------------------>  (80)     |
|64.517547|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1277)   <------------------  (80)     |
|74.259460|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1280)   ------------------>  (80)     |
|74.376467|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1280)   <------------------  (80)     |
|74.379551|                   |         GetCapabilities               |SOAP/ONVIF: GetCapabilities
|         |                   |(1281)   ------------------>  (80)     |
|74.527776|                   |         Fault     |                   |SOAP/ONVIF: Fault
|         |                   |(1281)   <------------------  (80)     |

2012年7月25日 星期三

ONVIF -- 透過 gSOAP 產生程式碼



gSOAP 可以幫忙將 wsdl 所定義的 schema 轉換成對應的程式碼,以下紀錄如何轉換的過程。


操作步驟

一、下載 gSOAP
連結 http://gsoap2.sourceforge.net/,下載 gSOAP,此篇文章撰寫時的最新版本為 2.8.9 。
 
二、利用 wsdl2h.exe ,產生 header files,此處以 media.wsdl 為例
wsdl2h.exe -c -o media.h http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.w3.org/2006/03/addressing/ws-addr.xsd 

三、使用 header file 產生程式碼,若 header file 較大,則需較長的產生時間。
soapcpp2 -C –I../../import  media.h
註:"-C"表示產生Client端的程式碼,改成"-S"便會產生Server端程式碼。

四、成功後,會產生 149 個檔案,如下
media.h
MediaBinding.AddAudioDecoderConfiguration.req.xml
MediaBinding.AddAudioDecoderConfiguration.res.xml
MediaBinding.AddAudioEncoderConfiguration.req.xml
MediaBinding.AddAudioEncoderConfiguration.res.xml
MediaBinding.AddAudioOutputConfiguration.req.xml
MediaBinding.AddAudioOutputConfiguration.res.xml
MediaBinding.AddAudioSourceConfiguration.req.xml
MediaBinding.AddAudioSourceConfiguration.res.xml
MediaBinding.AddMetadataConfiguration.req.xml
MediaBinding.AddMetadataConfiguration.res.xml
MediaBinding.AddPTZConfiguration.req.xml
MediaBinding.AddPTZConfiguration.res.xml
MediaBinding.AddVideoAnalyticsConfiguration.req.xml
MediaBinding.AddVideoAnalyticsConfiguration.res.xml
MediaBinding.AddVideoEncoderConfiguration.req.xml
MediaBinding.AddVideoEncoderConfiguration.res.xml
MediaBinding.AddVideoSourceConfiguration.req.xml
MediaBinding.AddVideoSourceConfiguration.res.xml
MediaBinding.CreateProfile.req.xml
MediaBinding.CreateProfile.res.xml
MediaBinding.DeleteProfile.req.xml
MediaBinding.DeleteProfile.res.xml
MediaBinding.GetAudioDecoderConfiguration.req.xml
MediaBinding.GetAudioDecoderConfiguration.res.xml
MediaBinding.GetAudioDecoderConfigurationOptions.req.xml
MediaBinding.GetAudioDecoderConfigurationOptions.res.xml
MediaBinding.GetAudioDecoderConfigurations.req.xml
MediaBinding.GetAudioDecoderConfigurations.res.xml
MediaBinding.GetAudioEncoderConfiguration.req.xml
MediaBinding.GetAudioEncoderConfiguration.res.xml
MediaBinding.GetAudioEncoderConfigurationOptions.req.xml
MediaBinding.GetAudioEncoderConfigurationOptions.res.xml
MediaBinding.GetAudioEncoderConfigurations.req.xml
MediaBinding.GetAudioEncoderConfigurations.res.xml
MediaBinding.GetAudioOutputConfiguration.req.xml
MediaBinding.GetAudioOutputConfiguration.res.xml
MediaBinding.GetAudioOutputConfigurationOptions.req.xml
MediaBinding.GetAudioOutputConfigurationOptions.res.xml
MediaBinding.GetAudioOutputConfigurations.req.xml
MediaBinding.GetAudioOutputConfigurations.res.xml
MediaBinding.GetAudioOutputs.req.xml
MediaBinding.GetAudioOutputs.res.xml
MediaBinding.GetAudioSourceConfiguration.req.xml
MediaBinding.GetAudioSourceConfiguration.res.xml
MediaBinding.GetAudioSourceConfigurationOptions.req.xml
MediaBinding.GetAudioSourceConfigurationOptions.res.xml
MediaBinding.GetAudioSourceConfigurations.req.xml
MediaBinding.GetAudioSourceConfigurations.res.xml
MediaBinding.GetAudioSources.req.xml
MediaBinding.GetAudioSources.res.xml
MediaBinding.GetCompatibleAudioDecoderConfigurations.req.xml
MediaBinding.GetCompatibleAudioDecoderConfigurations.res.xml
MediaBinding.GetCompatibleAudioEncoderConfigurations.req.xml
MediaBinding.GetCompatibleAudioEncoderConfigurations.res.xml
MediaBinding.GetCompatibleAudioOutputConfigurations.req.xml
MediaBinding.GetCompatibleAudioOutputConfigurations.res.xml
MediaBinding.GetCompatibleAudioSourceConfigurations.req.xml
MediaBinding.GetCompatibleAudioSourceConfigurations.res.xml
MediaBinding.GetCompatibleMetadataConfigurations.req.xml
MediaBinding.GetCompatibleMetadataConfigurations.res.xml
MediaBinding.GetCompatibleVideoAnalyticsConfigurations.req.xml
MediaBinding.GetCompatibleVideoAnalyticsConfigurations.res.xml
MediaBinding.GetCompatibleVideoEncoderConfigurations.req.xml
MediaBinding.GetCompatibleVideoEncoderConfigurations.res.xml
MediaBinding.GetCompatibleVideoSourceConfigurations.req.xml
MediaBinding.GetCompatibleVideoSourceConfigurations.res.xml
MediaBinding.GetGuaranteedNumberOfVideoEncoderInstances.req.xml
MediaBinding.GetGuaranteedNumberOfVideoEncoderInstances.res.xml
MediaBinding.GetMetadataConfiguration.req.xml
MediaBinding.GetMetadataConfiguration.res.xml
MediaBinding.GetMetadataConfigurationOptions.req.xml
MediaBinding.GetMetadataConfigurationOptions.res.xml
MediaBinding.GetMetadataConfigurations.req.xml
MediaBinding.GetMetadataConfigurations.res.xml
MediaBinding.GetProfile.req.xml
MediaBinding.GetProfile.res.xml
MediaBinding.GetProfiles.req.xml
MediaBinding.GetProfiles.res.xml
MediaBinding.GetServiceCapabilities.req.xml
MediaBinding.GetServiceCapabilities.res.xml
MediaBinding.GetSnapshotUri.req.xml
MediaBinding.GetSnapshotUri.res.xml
MediaBinding.GetStreamUri.req.xml
MediaBinding.GetStreamUri.res.xml
MediaBinding.GetVideoAnalyticsConfiguration.req.xml
MediaBinding.GetVideoAnalyticsConfiguration.res.xml
MediaBinding.GetVideoAnalyticsConfigurations.req.xml
MediaBinding.GetVideoAnalyticsConfigurations.res.xml
MediaBinding.GetVideoEncoderConfiguration.req.xml
MediaBinding.GetVideoEncoderConfiguration.res.xml
MediaBinding.GetVideoEncoderConfigurationOptions.req.xml
MediaBinding.GetVideoEncoderConfigurationOptions.res.xml
MediaBinding.GetVideoEncoderConfigurations.req.xml
MediaBinding.GetVideoEncoderConfigurations.res.xml
MediaBinding.GetVideoSourceConfiguration.req.xml
MediaBinding.GetVideoSourceConfiguration.res.xml
MediaBinding.GetVideoSourceConfigurationOptions.req.xml
MediaBinding.GetVideoSourceConfigurationOptions.res.xml
MediaBinding.GetVideoSourceConfigurations.req.xml
MediaBinding.GetVideoSourceConfigurations.res.xml
MediaBinding.GetVideoSources.req.xml
MediaBinding.GetVideoSources.res.xml
MediaBinding.nsmap
MediaBinding.RemoveAudioDecoderConfiguration.req.xml
MediaBinding.RemoveAudioDecoderConfiguration.res.xml
MediaBinding.RemoveAudioEncoderConfiguration.req.xml
MediaBinding.RemoveAudioEncoderConfiguration.res.xml
MediaBinding.RemoveAudioOutputConfiguration.req.xml
MediaBinding.RemoveAudioOutputConfiguration.res.xml
MediaBinding.RemoveAudioSourceConfiguration.req.xml
MediaBinding.RemoveAudioSourceConfiguration.res.xml
MediaBinding.RemoveMetadataConfiguration.req.xml
MediaBinding.RemoveMetadataConfiguration.res.xml
MediaBinding.RemovePTZConfiguration.req.xml
MediaBinding.RemovePTZConfiguration.res.xml
MediaBinding.RemoveVideoAnalyticsConfiguration.req.xml
MediaBinding.RemoveVideoAnalyticsConfiguration.res.xml
MediaBinding.RemoveVideoEncoderConfiguration.req.xml
MediaBinding.RemoveVideoEncoderConfiguration.res.xml
MediaBinding.RemoveVideoSourceConfiguration.req.xml
MediaBinding.RemoveVideoSourceConfiguration.res.xml
MediaBinding.SetAudioDecoderConfiguration.req.xml
MediaBinding.SetAudioDecoderConfiguration.res.xml
MediaBinding.SetAudioEncoderConfiguration.req.xml
MediaBinding.SetAudioEncoderConfiguration.res.xml
MediaBinding.SetAudioOutputConfiguration.req.xml
MediaBinding.SetAudioOutputConfiguration.res.xml
MediaBinding.SetAudioSourceConfiguration.req.xml
MediaBinding.SetAudioSourceConfiguration.res.xml
MediaBinding.SetMetadataConfiguration.req.xml
MediaBinding.SetMetadataConfiguration.res.xml
MediaBinding.SetSynchronizationPoint.req.xml
MediaBinding.SetSynchronizationPoint.res.xml
MediaBinding.SetVideoAnalyticsConfiguration.req.xml
MediaBinding.SetVideoAnalyticsConfiguration.res.xml
MediaBinding.SetVideoEncoderConfiguration.req.xml
MediaBinding.SetVideoEncoderConfiguration.res.xml
MediaBinding.SetVideoSourceConfiguration.req.xml
MediaBinding.SetVideoSourceConfiguration.res.xml
MediaBinding.StartMulticastStreaming.req.xml
MediaBinding.StartMulticastStreaming.res.xml
MediaBinding.StopMulticastStreaming.req.xml
MediaBinding.StopMulticastStreaming.res.xml
soapC.c
soapClient.c
soapClientLib.c
soapH.h
soapStub.h

五、參考 soapStub.h,實作對應的函數,例如:soap_serve___ns2__GetStreamUri(struct soap*);,此處,我將所有相關的函數統一放在soapStub.c內。


六、若要產生完整的 onvif API,則可以加入所有 onvif 所定義的 wsdl, 參考下列指令

wsdl2h.exe -c -o onvif.h
http://www.onvif.org/onvif/ver10/schema/onvif.xsd
http://www.w3.org/2006/03/addressing/ws-addr.xsd
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl
http://www.onvif.org/onvif/ver10/deviceio.wsdl
http://docs.oasis-open.org/wsrf/rw-2.wsdl
http://docs.oasis-open.org/wsn/bw-2.wsdl
http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl
http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl


問題釋疑

1. Critical error: #import: Cannot open file "ns1.h" for reading.
    wsdl2h.exe 使用時加入 http://www.w3.org/2006/03/addressing/ws-addr.xsd 即可。


2. 編譯時發現少了 stdsoap2.h
    此檔案可在 \gsoap_2.8.9\gsoap-2.8\gsoap\ 取得。
    複製時應該同時複製 stdsoap2.h 與 stdsoap2.c


3. Makefile 舉例,因為我在 Windows 使用 mingw 來編譯,其Makefile 如下
OBJS = stdsoap2.o soapC.o soapClient.o soapClientLib.o soapStub.o
all: onvif_media
%.o: %.c soapH.h soapStub.h import/*.h
gcc -c $< -o $@
onvif_media: $(OBJS)
gcc $(OBJS) -o $@
clean:
rm -f *.o onvif_media.exe

參考資料:

  1. wsdl2h 與 soapcpp2 用法
  2. gSOAP 中文使用介紹
  3. http://www.cppblog.com/qiujian5628/archive/2008/10/11/54019.html

 



2012年7月24日 星期二

[日文][歌詞] 瞳をとじて


http://vlog.xuite.net/play/ZVV1UzV0LTE5MjAzMTAuZmx2/平井堅-輕閉雙眼?html5=1


每當早晨醒來 你脫下的軀殼總在身邊
過去總能感受到你背後的溫暖 今天卻是一陣寒冷
停止苦笑 拉開沉重的窗簾 炫目的朝陽 每天追趕著我
那天 讓你見到我哭泣的臉 眼淚映照著夕陽
每當我祈禱著能夠卸下肩膀上的溫暖
我的心 與身體 卻都牢記著你

[日文][歌詞] 明日晴れるかな


http://www.youtube.com/watch?v=TEnLqRGgg_Q&feature=related


熱情的眼淚和戀愛的呼喊都是如此
閃耀著的日子消失去了哪裡?
如果明天也是在不確定的道路上徬徨
繼續這樣也無法回到原點

耳朵如果澄淨下來, 心中的聲音
到底是要告訴傳達什麼給我呢?
現在在污穢的街道的一角
每每想起那時的天空

[日文][歌詞] ORION

http://vlog.xuite.net/play/c1JNaFdOLTE1ODE1MjMuZmx2/-PV-中島美嘉-ORION?html5=1 



我總是在哭泣
因為你告訴我
不讓人看見你的軟弱
並不代表你很堅強
I believe

在寒冷的回家路上
只有星星陪伴著我

就連剛剛深信不疑
你淡淡的體溫
似乎都快要遺忘

直到現在才第一次意識到
喜歡上一個人的心情

2012年7月18日 星期三

ONVIF 互通問題彙整分析

2012-07-19 更新

1. 取得 Image 屬性的方法

摘錄 ONVIF-Imaging-Service-Spec-v220.pdf  內容如下:
The available imaging settings can be retrieved through the GetVideoSources command part of the media service.  
If the Video Source supports any of the imaging settings as defined by the ImagingSettings type in the [ONVIF Schema], then it should be possible to retrieve the imaging settings from the device through the GetImagingSettings command

PMP renew

PMP考完也快三年了,最近一直收到PMI寄來通知renew的信件。有點猶豫是否還需要這份證照,畢竟拿了這麼久,也沒有因為這張證照加薪過。總之,先研究研究 renew的流程吧,若是只花點小錢的話,那就繼續拿PMP證照吧。

PMP證照是有效期的,每三年就需要 renew此份證照。其renew條件為需取得滿60 PDUs,官方網站建議了10種取得PDU的方式,簡單整理幾個如下。

網際網路上用來找尋設備的方法

欲實作NVR,第一步就是要能夠找到想要連接的IP Camea。
茲將網際網路上常用來找尋設備的方法整理如下:
  • WS-Discovery (ONVIF組織定義的方法)
  • SSDP  (DLNA組織定義的方法)
  • Multicast Domain Name Service(mDNS)
  • ADwin Config
  • Bonjour

2012年7月4日 星期三

ONVIF -- 自動偵測IPCam 的流程分析


使用一台符合 ONVIF 標準的 NVR 與 IPCam,測試並記錄其自動偵測 IPCam 以及加入 IPCam 的流程,以(Gxxx NVR為例)


自動偵測 IPCam

1. NVR 會使用 multicast的方式,
   傳送資料到 239.255.255.250 port 3702(ws-discovery)
 
2. 若網路上存在 IPCam,則會回應此訊息

3. NVR 與 IPCam 完成 ws-discovery 流程之後,其實此時就已經找到 IPCam了
   後續便可以改成使用 ONVIF 的訊息進行溝通


JPEG/RTP 封包分析


MJPEG(MotionJPEG)封包分析

RFC2435 定義了 RTP 上傳送的 JPEG 影像,由於各家廠商實作方式不同,曾在互通測試時產生問題,NVR所接收到的MJPEG無法正常顯示,所以特別針對此份規則書以及可能產生問題的封包加以分析。

2012年7月3日 星期二

RFC 2435 中文版


组织:中国互动出版网(http://www.china-pub.com/
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm
E-mailouyang@china-pub.com
译者:范晨 (fanchen  fan-chen@china.com)
译文发布时间:2001-9-11
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。


Network Working Group                                       R. Pereira
Request for Comments: 2435                        TimeStep Corporation
Obsoletes: 2035                                               R. Adams
Category: Standards Track                            Cisco Systems Inc.
                                                         November 1998

针对JPEG压缩视频的RTP荷载格式
RFC2435——RTP Payload Format for JPEG-compressed Video


本备忘录状态
本文档讲述了一种Internet通信的标准Internet跟踪协议,并对其改进提出了讨论和建
议。请参考最新版本的"Internet Official Protocol Standards" (STD 1) 来获得本协议的
标准化进程和状态,此备忘录的发布不受任何限制。
版权注意
版权归因特网协会(1998)所有,保留一切权利。

摘要
本文档描述了针对JPEG视频流的RTP荷载格式。此种包格式针对编码器参数基本不变化
的实时视频流进行了优化。
本文档是IETF下的视音频传输工作组的产品。意见或建议请发到该工作组的邮件列表
conf@es.net或直接发给作者。
   本备忘录的大部分与RFC2035一致,对协议的改动见附录D