[ Streaming ] 玩實況須知二三事…

玩實況須知二三事…
Oh… 現在才後悔當初沒有好好把寫字練好已經太晚了(笑)。

這篇沒有什麼內容。只是講一些玩實況以來的心得。不管你是偶爾實況還是剛接觸實況或者是現在才想實況甚至是已經實況過幾次的人!這篇應該都能提供一點用處。

一般

  1. 什麼是實況?

    就是將你的影像透過實況平台,即時播送出去。每個連上實況平台的人,都可以瀏覽你播送的影音內容。

    例如將你正在玩得遊戲畫面,或是透過接在電腦上的 webcam 接收到的你的影像,或者是桌面上你正在使用 Photoshop 修圖的畫面,或是你的 Media Player 播放的內容…等等!透過實況軟體,將畫面傳送到實況平台去向全世界播送!
     

  2. 實況一定都會有人來看嗎?

    不。如果你有新經營實況平台,你得找出吸引人的內容,而且還要懂得替自己打廣告。實況平台上面每天都有數千數萬個私人頻道播送著內容。
     

  3. 我一定需要用別人的實況平台嗎?我可以自己架設實況平台嗎?

    可以。但是當人數一多的時候,實況會需要大量的頻寬。這不是一般使用者能負擔得起的成本。因此大多數人都還是透過現有的實況平台播送自製的內容。
     

  4. 現在有哪些實況軟體?

    應該有很多。比較知名的有 FMLE(Flash Media Live Encoder)XSplitFFsplitOBS。FMLE 雖然老牌,但是使用的系統資源多。XSplit 要全功能需要付費,但是免費版本也可以應付一般需求。FFsplit 與 OBS 都是免費而且目前依然強勁成長中的實況軟體。
     

  5. 好。除此之外,我還需要什麼?

    不同實況軟體有不同的硬體需求,至少需要符合。而且還需要網路。對於網路的需求後面會談到。
     

  6. 盡量將實況軟體播送的內容鎖定在特定視窗的內容上。例如像 [ Streaming ] OBS – Open Broadcaster Software 與 PotPlayer 協力實況 這篇文章作到的,讓 OBS 播送的內容僅限於 PotPlayer 上。

    有些人並不清楚如何操作他們的實況軟體,令實況軟體播送的內容侷限於部份內容上,反而是讓實況軟體擷取整個桌面或部份桌面的內容,然後將要播送的內容放在被擷取的區域上。但是這麼作的風險就是「任何經過被擷取區域的內容都會被播送出去」。有時候可能會不慎將一些敏感資訊都送了出去。加上許多實況網站都有存檔功能,萬一敏感資訊被播送出去而不自知,日後有人翻閱存檔時發現了,那就不好了。

    像 OBS 提供的「延遲實況」功能也是一個很不錯的保險。在商業環境中,例如新聞台透過 SNG 的即時轉播,通常都會存在著數秒的延遲,並非是時間完全同步的轉播。這個延遲的目的就是當實況出現不當內容的時候,可以緊急切斷或是插入其他訊號遮斷以避免不當內容被播送出去。
     

設定

  1. 什麼是最大位元速率(Max bitrate)?

    實際上,視訊跟音訊需要的頻寬是很大的。舉例來說,以一部 720p(解析度 1280×720),符合台灣電視播放規格 NTSC (每秒 29.97 禎)的影片來說,每播送一秒需要的視訊頻寬是 ((1280x720x29.97)/1024)/1024 = 26.34Mbps(bit per second,位元/秒)。但是首先考慮到的就是,我們沒有這麼大的上傳頻寬(況且此時只有視訊,還沒計算音訊需要的頻寬呢!)。

    因此此時需要將訊號壓縮,必要時還要犧牲一些品質跟流暢度,好讓訊號頻寬可以壓縮到合理而且可以接受的範圍。

    「最大位元速率(Max bitrate)」就是你的實況訊號最大的頻寬。一般這個單位是 Kbps。由於我們使用的寬頻網路的頻寬也都是用 bps(bit per second,位元/秒)在計算(例如中華電信光世代 50M/20M,實際上是指最大下載頻寬 50Mbps/最大上傳頻寬 20Mbps),因此也就省了一些換算的需求。

    設定了最大位元速率(Max bitrate)的值之後,實況軟體就會將視訊與音訊所需要的頻寬壓縮到接近設定的數值。
     

  2. 實況的時候,設定的最大位元速率(或是上傳頻寬)一定要開到很大嗎?答案是否定的。

    這個觀念很重要:「你的實況串流對於頻寬的需求等於觀賞者觀賞你的實況所需要的頻寬」。如果你的實況播送需要 4Mbps 的上傳頻寬,表示觀賞你實況的觀眾,他們的下載也必須有 4Mbps 的頻寬。如果你的實況播送設定到 12Mbps,則你的觀眾們也需要 12Mbps 的下載頻寬!這是一件很瘋狂的事情!不是每個人都有這麼寬的頻寬可用(無論上傳或下傳)。而且頻寬是一個很不穩定的東西。

    從你的電腦到實況伺服器中間其實會經過很多節點,每一個節點都會影響頻寬。而實況伺服器也不可能擁有無限的頻寬供使用者使用,因此他們也會進行一些「措施」。而實況伺服器到觀眾的裝置上(電腦/平板/手機等)上也需要經過很多節點。影響串流傳輸的頻寬的因素太多了。

    因此不要設定太大的最大位元速率。這樣比較能保證實況的品質。
     

  3. 那是不是乾脆把最大位元速率設的很小就好?那也不對。

    從上面的上面的例子來看,那樣子的視訊需要 26.34Mbps 的頻寬。要將這麼大的需求量壓縮到 1000Kbps(1M = 1024K),如果要維持一樣的品質,那需要極大的系統資運來運算,甚至大到整台電腦的資源都被實況軟體吃光光,只是為了壓縮訊號而已。這樣一點意義都沒有,因為卡的要死的電腦,用來實況卡死的畫面嗎?因此實況軟體可以設定壓縮品質的等級,以及壓縮的方式。壓縮的方式直接影響佔用的系統資源以及輸出的品質。佔用系統資源越少的壓縮方式,自然就必須犧牲品質才能達到需求。而在運算能力強大的電腦上,就可以考慮使用佔用系統資源較高的壓縮方式,來取得較好品質的實況訊號。
     

  4. 實況必然存在著將視訊和音訊編碼的步驟。不必存在著「硬體編碼比軟體編碼還要好」的想法。

    硬體編碼的優勢就是高效能,穩定,低耗能。而軟體編碼的優勢則是高彈性,高品質,低廉的價格。現代的電腦運算能力已經十分強悍,選擇好的實況軟體以及搭配適當地設定,就可以不必消耗太多系統資源卻依然能提供好品質的實況訊號。如果要追求相同品質的硬體編碼器,需要的費用並不低!而比較便宜的硬體編碼器,通常品質都不如現代的實況軟體。如果你是專業的實況玩家,當然可以考慮硬體編碼器。但是如果是個業餘玩家,把錢投資在電腦硬體上會比較划算。

有機會再更深入介紹 OBS 與 FFsplit。