透過街景服務直接上傳

2.1 版

背景

在舊版 API 中,符合 OSC 規定的相機會建立 Wi-Fi 存取點,供 iOS 版和 Android 版的 Google 街景服務應用程式連線。應用程式會指示 OSC 相機拍照及下載相機拍攝的內容,然後發布至 Google 街景服務。為加快內容發布程序,我們推出了新的選用工作流程,讓 OSC 相機直接將內容上傳至街景服務伺服器。這樣一來,系統就不會先將內容從相機傳送到應用程式,再從應用程式傳送到街景服務伺服器,因此造成內容重複傳輸的時間大幅減少。這項措施已新增至 API 級別 2.1,且僅適用於可提供 Wi-Fi 存取點,並連線至可連上網際網路的基礎架構 Wi-Fi 存取點。

總覽

新的上傳工作流程要求相機提供一種方式 (例如專屬的實體按鈕或現有按鈕組合),讓使用者可在兩種 Wi-Fi 模式之間切換:

  • 直接模式:在這個模式下,攝影機會做為存取點,讓行動裝置連線至該裝置。在這個模式下,行動裝置可以控制相機來執行拍照等工作。行動裝置也可以為相機提供 Wi-Fi 存取點憑證,之後相機就能利用這些憑證切換至「網際網路模式」
  • 網際網路模式:在此模式下,相機會連線至可連上網際網路的 Wi-Fi 存取點,這會使用相機先前處於直接模式時,從應用程式提供的存取點 ID 和密碼。行動裝置可以在這個模式下,直接從相機啟動上傳程序至街景服務伺服器。也可以繼續控制相機來執行拍照等工作。

關閉相機後,相機模式應持續開啟並重新開啟。此外,我們強烈建議您讓相機提供訊號 (例如螢幕上的指示燈、聲音或指示燈),告知使用者目前的 Wi-Fi 模式。

相機也應有實作探索通訊協定 (請參閱探索),以在相機處於網際網路模式時處理通訊。

網際網路模式設定

  1. 使用者開啟相機。尚未設定「網際網路模式」,因此會從「直接模式」啟動。
  2. 行動裝置會連上攝影機的 Wi-Fi。
  3. 應用程式會產生自行簽署的憑證。
  4. 應用程式將 switchWifi 指令傳送至相機,其中含有相機所連結基礎架構 Wi-Fi 存取點的 SSID、該存取點的密碼,以及相機稍後用來驗證應用程式的自行簽署憑證
    • 請注意,相機應安全地儲存 Wi-Fi 憑證和應用程式自行簽署的憑證。
    • 建議相機可以儲存多個 Wi-Fi 憑證,因為相機可能需要連線至不同的基礎架構 Wi-Fi 存取點。相機至少須儲存最新的 Wi-Fi 憑證。
  5. 相機會以自行簽署的憑證回應,供應用程式稍後驗證相機。
  6. 使用者現在可以直接從相機切換「直接模式」和「網際網路模式」(例如使用實體切換按鈕)。

探索廣告活動

OSC 相機的探索功能屬於零 conf 協定。攝影機「必須」實作 IPv4 連結本機位址,並「必須」符合 mDNS (多點傳送 DNS) 和 DNS-SD (DNS 式服務探索) 規格:

服務執行個體名稱

針對 Service Instance Name 的 <Service> 部分,OSC 相機應使用 _osc._tcp。針對 Service Instance Name 的 <Domain> 部分,OSC 相機應使用 local.。請注意,local 後有結尾的 .

TXT 記錄

我們要求相機在 TXT 記錄中傳送下列鍵/值組合:txtverstyid

文字稿

如要允許日後更新 TXT 版本,請使用鍵/值組合 txtvers=1

Ty

提供使用者可理解的相機名稱,例如 ty=Google Street View Optimized Spherical Camera Model XYZ

id

提供相機的專屬 ID,例如 id=A unique id of the cameraid 的值必須與 /osc/info 輸出內容中的 cameraId 相同。

公告事項

在相機啟動或關機時,攝影機「必須」執行 mDNS 規格中所述的公告步驟。至少傳送對應的公告兩次,且間隔至少一秒。

新創公司

在相機啟動時,「必須」執行 mDNS 規格中所述的探測和公告步驟。在這種情況下,應傳送 SRV、PTR 和 TXT 記錄。建議您盡可能將所有記錄歸入一個 DNS 回應。如果不是,建議使用下列順序:SRV、PTR、TXT 記錄。

關機

關閉相機時,請依據 mDNS 說明文件第 10.1 節所述,在 TTL=0 結尾傳送「goodbye 封包」,藉此通知所有相關方。

自行簽署憑證

應用程式和相機可在網際網路模式設定期間共用的自行簽署憑證,以便彼此進行驗證,並使用 SSL 雙向驗證建立安全通道來保護交換資料。

網際網路模式期間,應用程式會做為 SSL 伺服器和相機做為用戶端。相機會檢查伺服器憑證是否與應用程式的自行簽署憑證相符,應用程式就會檢查用戶端的憑證是否與相機相符。

網際網路模式期間,任何支援雙向驗證 (例如 OpenSSL) 的 SSL 程式庫都可以用來在應用程式和相機之間建立 SSL 連線。

全新上傳流程

  1. 如果攝影機未處於「網際網路模式」,使用者會切換至「網際網路模式」。攝影機會使用已儲存的憑證連線到基礎架構 Wi-Fi。
  2. 行動裝置也會連上基礎架構 Wi-Fi 並尋找攝影機。
    • 這需要相機來實作本機探索通訊協定 mDNS/DNS-SD (請參閱探索)。
    • 其實作方式並無特別規定 (mDNSResponder 是很好的參考資料)。
    • 應用程式和相機都會在設定網際網路模式時產生並共用自行簽署的憑證。在網際網路模式下,應用程式和相機都會透過雙向 SSL 驗證彼此驗證。
    • 找到相機後,系統會根據 HTTP 1.1,直接透過區域網路啟用用戶端通訊。資料格式為 JSON。要求可以是 GET 或 POST 要求。
  3. 應用程式使用 listFiles 指令向相機查詢檔案清單。
  4. 應用程式會使用 uploadFile 指令啟動上傳,直接從相機將圖片或影片上傳至街景服務伺服器。
  5. 應用程式使用 status 指令定期輪詢相機,以便上傳進度。