Furbo 即時影像串流技術 — 縮短毛孩與爸媽之間距離的秘密!

Allen Kuo
Tomofun Tech Blog
Published in
9 min readApr 24, 2024
即時影像串流, live steaming, live steam, liveview

Tomofun 的主力產品 Furbo 寵物攝影機,提供了一個完善的平台讓出門在外的毛孩爸媽可以跟家中的毛小孩互動。其中包括了即時影像串流、雙向通話功能,更有有趣的零食投放機制。有了這些功能,家中的毛小孩可以大幅度減緩因為跟主人分離所帶來的焦慮。本篇文章將會分為上下兩集,上集會來簡述一下,要讓毛孩爸媽順利的與家中毛小孩相見,需要多少在即時影像串流技術上的實踐呢?而下集的部分就會來講講除了基本的技術之外,Tomofun 為了優化這個體驗,又發揮了哪些創意?

即時影像串流技術

網路傳輸模式

身處現在這個世代的你和我,相信各位都對 Youtube 以及 Netflix 這兩大平台不陌生,甚至每天的生活都跟他們息息相關,這兩個熟悉的網站提供許多的影片內容供我們觀賞。而他們的運作模式,簡單來說就是用戶端的手機或電腦平板 (client) 直接對影片提供商的伺服器 (server) 下載影片,一邊下載也就一邊開始播放,不需要等待整部影片一次下載完才能觀看,能夠達到隨點隨看的效果,給大家帶來許多便利性。

client to server
client to server 示意圖

Furbo 寵物攝影機所提供的即時影像串流服務,與其有相似之處,但也有些許的不同。Furbo 寵物攝影機的運作模式是將使用者家中的影像,透過寵物攝影機傳輸到用戶的手機 App 端上,相較於前面提及的 Youtube 以及 Netflix,我們的影像來源並不是一個統一的伺服器,而是放在家中一台一台的寵物攝影機。這樣的監視攝影機產品通常會使用到 P2P (peer-to-peer) 這樣的技術,讓用戶能夠使用自己的手機,跟家中的寵物攝影機直接進行連線傳輸。咦……等等!你說的『P2P』是我心裡想得那個『P2P』嗎?那個叫什麼 Foxy 的神奇下載軟體?(不小心透露筆者年齡)。沒錯,說到 P2P 這個名詞,大家腦海裡通常都會先浮現出下面這個logo,但這邊所提到的 P2P 跟 Foxy 這種檔案交換軟體的 P2P 技術,雖然名子一樣但應用層面卻有著大大的不同。

P2P 這個技術的目的在於,讓兩個網路世界中的裝置,能夠直接的溝通並傳輸資料。而要讓兩個素昧平生,不知道對方在網路世界哪個地方的裝置們,能夠互相溝通,就需要 P2P 伺服器來幫忙牽線。Furbo 寵物攝影機會先向 P2P 伺服器進行連線,接下來如果手機 App 也向 P2P 伺服器連線的話,P2P 伺服器就會知道這兩個人想要互相溝通,它就會幫忙打通這兩個人之間的路,讓兩個人可以看到彼此,這樣他們就可以直接傳輸資料了。聽起來是不是很像月老牽紅線呢?

P2P 伺服器就好比神通廣大的月老,而 Furbo 寵物攝影機跟手機的 App 就像是完全沒有關係的兩個人,就算走在路上遇到彼此,也只能擦肩而過、愛人錯過。但有一天這兩個人都跟月老仔細地點菜,誠心地說想要認識對方,這時候月老就可以大展神威打通兩個人之間的道路,讓兩人可以遇到彼此!而兩個人相見歡後,月老就可以功成身退,之後兩個人的溝通也不再需要透過月老傳話,因為他們已經互相知道對方的聯絡方式了,就可以自己去約會囉!

到這邊大家有沒有更能體會 P2P 這項技術的優點了呢?有了 P2P 這項技術,當使用者透過手機 App 想要查看家中毛孩狀況的時候,手機 App 就可以直接跟家中的 Furbo 寵物攝影機進行溝通,並且獲得影像資料,路打通之後就不再需要透過月老那個中心伺服器了。這樣的方式有時候可以讓資料傳輸的更快速,更重要的是也大幅度地減輕伺服器的負擔。

P2P server
client to client 示意圖

認識完 P2P 這項幫助即時影像串流的技術後,讓我們來看得更仔細一點,來看看這兩個人私底下在傳輸的影像資料到底還有什麼秘密在裡面。

影像的傳輸與壓縮

相信大家都知道影片的本質就是一張張的圖片,連續播放所構成的,而每秒播放多少張圖片也就是鼎鼎大名的 FPS (Frames Per Second)。大家可以試著想像如果今天有一部 1080p 的影片用 30 fps 的速度在播放,也就意味著每 33 毫秒(1000ms / 30)就要播放一張 1080p 的圖片。如果能夠事先把全部的影像資料下載下來再播放,那當然不會構成太大的問題。但像是 Furbo 寵物攝影機這種即時影像串流的服務,無法事先把影片下載回來播放,而是要即時地每 33ms 就要傳送一張完整的 1080p 圖片,想必對網路傳輸的速度是個很大的考驗。所以為了讓影像能夠順暢且即時地從家中的寵物攝影機傳送到使用者的手機裡,這些影像資料勢必得經過一番瘦身的步驟才行!

而想要幫一個人減重前,得先好好得觀察他有什麼地方可以改進。像是常見的運動量不足?或是平時高熱量食物攝取過多?這些都有可能是他瘦不下來的元兇。而想要幫影像資料瘦身之前,我們也得先來看看這些影像資料這麼胖的原因到底是什麼,以及有沒有多餘不必要的部分可以減少。

先前提到一部 30 fps 的影片,會以每 33ms 一張照片的速度在播放,等等33ms !? 我家狗狗在家裡都懶洋洋地慢慢走路,牠光抬個腳可能一秒就過去了,你 33ms 紀錄一張照片會不會太積極了一點!沒錯,如果我們以這麼快的速度在紀錄畫面的話,通常可以看到影片畫面當中,其實大部分都是不動的畫面!只有畫面裡少部分的地方是會移動、會改變的。這樣說可能有點難想像,讓我們有請 Tomofun 的 CCO 來為您示範一下:

Furbo liveview, Furbo live streaming
Furbo寵物攝影機實際拍攝的畫面截圖

從上面這段影片中的五個連續動作截圖可以看到,整個畫面幾乎都是不變的場景,木頭地板、窗戶、牆壁、貓抓墊,從頭到尾都完全沒變,只有 KiKi 本貓在移動而已,更不用說我們的 KiKi 身材是如此地苗條,這樣的移動根本只佔整個畫面的一點點空間吧!所以說大家應該可以很明顯的看出來,我們每 33ms 在傳輸的畫面,大部分的地方都是一模一樣的,那我們何不只記錄畫面中有改變的地方就好了呢?而這也就是我們能夠幫影片瘦身的關鍵!接下來就來介紹影片瘦身技術中,是怎麼做到只記錄畫面當中有改變的地方!

在影片瘦身的技術當中,有兩個很重要的角色:I-frame (Intra pictures) 和 P-frame (Predicted pictures),現在就讓我們來看看這兩個畫面的用途!首先要介紹的是 I-frame,它是影像資料中的關鍵角色!I-frame 是獨立的一張完整畫面,它並不需要依賴其他的畫面就可以直接顯示影像。當你開始觀看一部影片時,通常會看到的第一個畫面就是 I-frame。它包含了完整的影像資訊,就像是一幅完整的畫作。

接著要介紹的是 P-frame,它是 I-frame 的好夥伴,P-frame 身為預測畫面,就是要來記錄畫面改變的。它利用前一個 I-frame 的完整資訊,再搭配自己所記錄的畫面改變處,來預測當前影像的內容。P-frame 就像是一幅接龍畫,透過與前一幀的比較,只保存了影像中真正變化的部分。大家可以看看下面這張由 KiKi 進行示範的示意圖:

All I-frame v.s. I-frame + P-frame
All I-frame v.s. I-frame + P-frame

上面那排是沒有經過瘦身的樣子,每張傳送出去的都是一個完整的畫面,想必容量一定不小。而下面那排就是影像資料經過瘦身之後的樣子,一開始需要一個完整的關鍵畫面,但接下來只需要 P-frame 來記錄畫面改變之處,在播放影片的時候就可以達到一樣的效果了。相較第一排瘦身前的樣子,瘦身後的影像資料大小也大幅度的縮減,這樣子在做即時影像串流的時候就可以不需要一直傳遞這麼龐大的影像資料,使用者就有機會在有限的網路頻寬當中,觀看高品質的影像畫面!

指令互動

除了即時影像串流之外,要能夠減緩家中毛孩的分離焦慮的話,得要有更多除了影像的互動才能達成。Furbo 寵物攝影機最具特色的零食投擲功能就是其中之一,要能夠做到零食投擲的第一步,當然是要先有良好的硬體設計才行,想知道 Tomofun 在為了零食投擲機構做了多少努力嗎?非常建議大家看看由硬體部門精心攥寫的文章!(延伸閱讀:Furbo 硬體設計揭秘 — 毛孩最愛的投食功能!https://medium.com/tomofun-tech-blog/furbo-hardware-toss-system-design-595790fbc158

有了良好的硬體作為靠山,接下來就要靠 Furbo 韌體來接收指令並執行零食投擲的動作。在本篇文章的前半段有提及 Furbo 寵物攝影機跟手機 App 經由月老牽線之後,已經能在網路世界的茫茫人海當中找到彼此並且交換聯絡方式了,接下來的溝通想當然也變得非常簡單。兩個人只要能夠訂好共通的指令代碼,就可以通過這些暗號來達成了,而投擲零食當然就是其中一個重要的暗號。當使用者透過 Furbo App 在即時影像中滑動螢幕正下方的零食, Furbo App 就會利用 P2P 連線送出投擲零食的暗號給 Furbo 寵物攝影機,機台接收到指令後認得這個暗號,就可以通知硬體底層執行投擲零食的動作了!

指令代碼溝通
指令代碼溝通示意圖

而兩個人之間的暗號當然還有很多個,在 Furbo App 上面諸多的功能設定,像是擴音器的音量、零食尺寸、夜視模式設定等等,每個功能幾乎都綁定著一個獨特的暗號,這些暗號雖然簡單,但要利用這些暗號順利溝通都要歸功於前面所提及的 P2P 連線,讓兩個人可以直接對話,就不需要再經過另外的伺服器來傳遞這些暗號。

小結

讀到這邊想必各位對於即時影像串流有更進一步的了解,而除了基本的技術之外,Tomofun 身為寵物攝影機的領導品牌,當然希望使用者在透過我們的產品跟家中毛小孩互動的過程,都是快速又順暢的。

既然我們已經請月老牽線,兩個人可以直接溝通傳輸,那我們還能做什麼努力來讓毛孩爸媽能夠更快速的與毛孩相見呢?影像串流的過程中我們又做了什麼樣的努力來應付千變萬化的網路環境呢?下一集就讓我們來講講,Tomofun 做了什麼努力來提升整體即時影響串流的品質吧!

--

--