如何選擇HLS視頻碼流


使用多種碼流的播放列表,代替單一的碼流。HLS客戶端可以動態根據帶寬情況來改變碼流,給用戶提供最佳用戶體驗。(這個說法比較理想化,個人覺得只要能提供多種碼流給用戶選擇就可以,app在啟動視頻時,根據帶寬來選取使用的碼流)
     需要考慮如下問題:
    
     1. 編碼設備和預算
          需要考慮設備是否能生成多種編碼,對於實時視頻如果使用CDN,還需要考慮碼流和用戶數量,計算成本。
    
     2. 碼流切換
          需要檢測不同碼流的間隔,注意客戶端是否能夠在多種碼流間切換
    
     3. 設備功能
          需要了解應用設備的能力,例如:分辨率、H.264的描述級別。不同的設備需要不同的播放列表:
         
          a. 設備分辨率:由於設備的分辨率不同,因此需要在主播放列表中加入 RESOLUTION 屬性,例如:
       #EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=640x360 
       #EXT-X-STREAM-INF:BANDWIDTH=1700000,RESOLUTION=1280x720 
       #EXT-X-STREAM-INF:BANDWIDTH=3500000,RESOLUTION=1920x1080
             
             如果沒有可選擇的分辨率,會出現使用高於當前屏幕分辨率的視頻播放,這樣會出現浪費用戶帶寬情況。
 
          b. 設備編碼: 由於設別使用的H.264描述級別不同,需要加入 CODECS屬性,允許客戶端過濾得到它支持特性,例如:
                #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="avc1.42001e" // 基線
         #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="avc1.4d001f" // 主要
         #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="avc1.64001f" // 高
                  設備可以根據播放列表,來選擇適合的播放內容
 
           c. 設別類型:可以根據設備類型來選擇使用的播放列表,例如:
 
               在Safari中可以根據HTTP頭中User-Agent得到設備類型(推薦在服務器實現)
              
         通過Safari來訪問服務器
          Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/ 534.46
          (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3
         
          Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46
          (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3
              
                APP得到設備類型
          AppleCoreMedia/1.0.0.9B176 (iPhone; U; CPU OS 5_1 like Mac OS X; en_us)
          AppleCoreMedia/1.0.0.9B176 (iPad; U; CPU OS 5_1 like Mac OS X; en_us) 
 
     4. 網絡功能
         首先判斷網路類型,然后選取適合的播放列表。這個既可以使用不同URL接口請求也可以使用附加參數,服務器根據情況返回相應的播放列表。
 
     5. 碼流建議
          一些播放列表選擇碼流建議:
 
          a. 把主要客戶端可以接受的碼流放到播放列表的第一個行位置,即使你使用多個播放列表。
               移動網路:   150Kbps視頻流
               WiFi:        440Kbps視頻流
          
          b. 提供盡可能多的碼流,這些碼流是指是在特定的帶寬下,最佳畫質的碼流。例如:
               64 Kbps, 110 Kbps, 200 Kbps, 350 Kbps, 550 Kbps, 900 Kbps 和 1500 Kbps
 
         c. 音頻/視頻流注意事項
               視頻必須使用相同的屏幕橫縱比,但可以考慮不同的尺寸,推薦:
                屏幕橫縱比          尺寸
                    16:9               416x234
                    4:3                 400x300
 
          d. 相鄰的碼流之間應該是1.5到2倍的關系
               相鄰的碼流太近,浪費帶寬,效果不明顯
               相鄰的碼流太遠,並不應適合客戶端,而且跳躍太大
 
          e. 關鍵幀(IDR 幀)
              每個視頻片段中至少有一個關鍵幀,多些更好。如果視頻片段中只有一個關鍵幀,那么它必須放在開始。
          
          f. 不要低報碼流在主播放列表中,在播放列表中應該放着視頻的最大碼流峰值而不是平均值,否則會出現延時(碼流和帶寬不匹配)。
 
      6. 移動網路特殊注意事項
              如果是開發iOS應用,必須要注意符合下面的要求,否則app竟會被拒。
              
               a. 提供一個192kbps流或者更低帶寬的音頻流,其中可以加圖片,必須要注意192kbps是峰值,而不是平均值,其中包括視頻和音頻
              
               b. 在你的app中,不能使用視頻片段
 
               注意:iOS提交審核,你需要提供一個192kbps的URL給測試者,否則是否能通過就不好說了
 
      7. 編碼格式
          視頻格式:H.264 Baseline Profile Level 3.0 (iPhone/iPod Touch),
                                     Main Profile Level 3.1 (iPad 1,2),
                                     High Profile Level 4.1 (new iPad),
                                     MPEG-4 Simple Profile (iPhone/iPod Touch/iPad),
                                     Motion JPEG (M-JPEG) (iPod Touch 4th Gen, iPhone 4, iPad) 
 
          音頻格式:HE-AAC 或 AAC-LC 最大 48 kHz, 立體聲
                          MP3 8 kHz 到 48 kHz, 立體聲
           碼格式:  MPEG-2 TS        
           注意:      iOS設備不支持交錯視頻          
 
     
     8. 推薦碼流配置
          時長:10秒
          視頻編碼推薦表:   
      
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM