zoukankan      html  css  js  c++  java
  • 如何选择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秒
              视频编码推荐表:   
          
     
  • 相关阅读:
    MVP模式与MVVM模式
    webpack的配置处理
    leetcode 287 Find the Duplicate Number
    leetcode 152 Maximum Product Subarray
    leetcode 76 Minimum Window Substring
    感知器算法初探
    leetcode 179 Largest Number
    leetcode 33 Search in Rotated Sorted Array
    leetcode 334 Increasing Triplet Subsequence
    朴素贝叶斯分类器初探
  • 原文地址:https://www.cnblogs.com/kuoxin/p/4623569.html
Copyright © 2011-2022 走看看