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秒
              视频编码推荐表:   
          
     
  • 相关阅读:
    【NumPy】 之常见运算(np.around、np.floor、np.ceil、np.where)(转)
    python3中collections模块(转)
    numpy.random模块用法小结
    生成模型和判别模型(《统计学习方法》截图)
    linux(Ubuntu)下机器学习/深度学习环境配置
    sklearn中predict_proba的用法例子(转)
    机器学习案例实战之信用卡欺诈检测——收获的技术
    分析长期治疗数据显示TNF拮抗剂似乎并未增加严重感染和肿瘤发生风险
    超声在鉴别诊断RA与PsA中的应用价值
    结合超声计数炎症关节的改良版DAS28的临床应用
  • 原文地址:https://www.cnblogs.com/kuoxin/p/4623569.html
Copyright © 2011-2022 走看看