2012年10月14日 星期日

gSoap -- 小技巧分享

紀錄使用 gSoap 開發 ONVIF 時所用的一些小技巧。

1. 取出 Client 所送的 HTTP data。
若需要存取HTTP的原始資料,可以直接使用 zsoap->buf, zsoap->buflen 這兩個資料結構。

2012年10月6日 星期六

RTSP -- QuickTime HTTP log


使用 QuickTime 與 sixties.mov 連接
使用的URL 為 rtsp://quicktime.tc.columbia.edu:554/users/lrf10/movies/sixties.mov
QuickTime 設定使用 HTTP 進行連接

==============================
GET /users/lrf10/movies/sixties.mov HTTP/1.0
User-Agent: QuickTime/7.7.1 (qtver=7.7.1;os=Windows NT 6.1)
x-sessioncookie: 76ii3yNZAABRIw0ABIAAAA
Accept: application/x-rtsp-tunnelled
Pragma: no-cache
Cache-Control: no-cache
==============================

RTSP -- QuickTime UDP log


因為所開發的 RTSP 與 QuickTime 互通時有點問題,因此收集 QuickTime log 以供後續分析

使用 QuickTime 與 sixties.mov 連接
使用的URL 為 rtsp://quicktime.tc.columbia.edu:554/users/lrf10/movies/sixties.mov


Log 摘錄如下:

DESCRIBE rtsp://quicktime.tc.columbia.edu:554/users/lrf10/movies/sixties.mov RTSP/1.0
CSeq: 1
Accept: application/sdp
Bandwidth: 512000
Accept-Language: en-GB
User-Agent: QuickTime/7.7.1 (qtver=7.7.1;os=Windows NT 6.1)

2012年9月25日 星期二

ONVIF -- Authentication



ONVIF 的運作過程中,可以分別在 HTTP Level 或是 web service leve 進行使用者認證,根據使用者提供的帳號密碼,可將用戶分成以下四類:
  1. Administrator 
  2. Operator
  3. User
  4. Anonymous
注意:沒有認證的用戶皆歸類於 Anonymous,原文摘錄如下
Unauthenticated users are placed into the anonymous category and a device shall not allow users to be added to the anonymous user level category

2012年9月12日 星期三

The difference between ONVIF Test Tool 11.12 and 12.06

在通過 ONVIF Test Tool 11.12 之後,便想試試看 ONVIF Test Tool 12.06,此時發現測試工具一開始定義 ipcam 的 features 便已經不正確了,無法進行正確的測試。茲將測試時,自己發現的差異處整理如下:

1. 由於初始的 features define 有誤,因此後續的測試範例預期結果會與 11.12 將會不同。
例如:DEVICE-1-1-17,若測試工具所偵測的 features 包含 imaging,則此測試範例預期要成功,否則預期此範例要失敗。

2012年9月4日 星期二

RTP -- interleaved 的用法

基本的 RTSP 協定,在Setup階段會協商兩端之間將使用的 RTP/RTCP port,原則是 RTP port 為偶數,RTCP port = RTP port+1,當傳送RTP/RTCP時分別在建立兩條連線,如下例:(RTP使用3056, RTCP使用3057)
SETUP rtsp://audio.example.com/twister/audio.en RTSP/1.0
   CSeq: 1
   Transport: RTP/AVP/UDP;unicast;client_port=3056-3057

但若是RTSP 使用 interleaved 的方式,則後續的RTP/RTCP則可以沿用已經建立的連線,不需要指定對應的埠號,另外建立連線,而是在原來的TCP連線之下,改成使用 channel id 來辨別封包內容為 RTP 或 RTCP,例如:
SETUP rtsp://video.foocorp.com:554/streams/example.rm RTSP/1.0
  Cseq: 3
  Transport: rtp/avp/tcp; interleaved=0-1

此表示 channel id 0 用來傳送 RTP,channel id 1 用來傳送 RTCP。


2012年8月26日 星期日

[LINUX] 在ubuntu環境編譯 skull 的方法

編譯LDD3書上範例 skull時,遇到了一些問題,茲記錄如下:

程式碼範例下載:http://www.oreilly.com.tw/product_linux.php?id=a184
測試機器編譯環境:Linux 3.2.0-23-generic #36-Ubuntu SMP

書上的範例是適用於 Linux 2.4/2.6 版本的,因此在 3.2.0-23 核心下編譯會造成許多錯誤訊息,以下針對scull的編譯錯誤作一整理說明。