推流器与播放器

视频直播的流程可以分为如下几步:

采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放

一、推流器

1.采集

采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种不同的输入源

  • 音频采集:不同的采集方式:手机麦克风、有线耳机、蓝牙耳机(1、是否真从蓝牙耳机录入、2、蓝牙耳机适配性:不同型号的蓝牙耳机连接不同的手机、3、在推流过程中连接蓝牙、4、长时间连接蓝牙,会不会断)
  • 图像采集:摄像头采集(前后置,单摄、三摄)、屏幕采集

中断时的采集:切至后台(安卓8、9、10)、接听电话(安卓10)、锁屏

2.处理

视频或者音频完成采集之后得到原始数据,为了增加一些效果,会在将其编码压缩前进行处理

  • 对音频的处理:降噪

(1)、不同噪声环境下的降噪:大会议室、小会议室、办公环境、公园、餐厅、马路边等

(2)、不同语音音素经过降噪算法处理后是否正常:

①、几种音素的分类:

浊音:指发音时声带有震动的音素,比如au,o。

清音:与浊音相反,主要是通过通过气流来发音,声带不震动,比如:s,p。

元音:发音过程中由气流通过口腔而不受阻碍发出的音

辅音:与元音相对,气流在口腔或咽头受到阻碍而形成的音,鼻音、摩擦音等。

②、降噪主观测试序列音素的选择:

中文测试:中文发音,语音的持续时间比较长,很多降噪算法对音素的损伤偏小,但是我们还是需要确保我们的测试序列中包含足够多的清音,比如:4,7,10,服等。

英文测试:相对于中文,英文每一个音素的发音延续时长就要短很多,清音出现的概率也更大,所以对英文测试时,我们就需要包含更多的音素,而且需要包含重读、轻读的单词,比如s 发音在单词前面,中间以及后面。还需要特别注意闭塞音:浊闭音:发音时长往往特别短10~20ms,能量往往比较低,在做瞬时噪声处理时,把握不好就会损伤严重,清闭塞音:40~100ms,这个时间相对也比较短,而且频谱上往往就是一根竖线,在噪声处理时也很容易造成损伤

(3)、不同录入距离的降噪:手持(20CM)\自拍杆(80CM)

(4)、不同采集方式之间的降噪及切换:蓝牙切手机麦克风、有线切手机麦克风

(5)、开启/关闭降噪之后的音画同步性

  • 对视频的处理:美颜、水印、滤镜

3.编码和封装

(1)编码

  • 为什么要编码:
    • 原始视频数据存储空间大,一个 1080P 的 7 s 视频需要 817 MB
    • 原始视频数据传输占用带宽大,10 Mbps 的带宽传输上述 7 s 视频需要 11 分钟
    • 而经过 H.264 编码压缩之后,视频大小只有 708 k ,10 Mbps 的带宽仅需要 500 ms
  • 基本原理:核心思想就是去除冗余信息

uploading.4e448015.gif转存失败重新上传取消

(2)封装

封装可以理解为媒体的容器,容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片只能从一开始看到最后,不能拖动进度条,而且如果不自己去手动另外载入音频就没有声音

4.推流到服务器

  • 各种网络场景测试
    1. WiFi
    2. 4G
    3. 连续丢包
    4. 极差网络
    5. 从弱网恢复至正常网络
    6. 断网再恢复
    7. 手动终止推流,再重新推流

5.播放器流播放

  • 延迟测试

不同拉流播放协议:RTMP、FLV、HLS

uploading.4e448015.gif转存失败重新上传取消

    1. 长时间推流,是否有累积延迟
    2. 反复断网重连,是否有累积延迟
    3. 同一手机尝试多次推流断流
  • 不同网络切换测试

uploading.4e448015.gif转存失败重新上传取消

    1. 注意恢复之后的延迟、音画同步
  • 音画同步测试
    1. 刚开始推流时、推流10分钟后
    2. 从后台切回时
    3. 前后置摄像头切换后
    4. 试多个机型
    5. 视频播放的流畅性、清晰度(静止场景、运动场景)
    6. 长时间推流,24个小时不断流

二、播放器

1.点播

  • 播放不同分辨率的视频:4K(原视频)、1080P、720P、360P
  • 播放不同编码标准的视频:H.264、H.265(播放多个)
  • 播放不同声道的视频:单声道、双声道、5.1声道
  • 播放无音频的视频
  • 播放带有字幕的视频
  • 播放地址是HTTPS的视频
  • 播放不同宽高比的视频(16:9、9:16、1:1)
  • 播放时息屏、切后台
  • 使用不同的解码方式进行播放:软解码、硬解码
  • 使用不同的显示数据流控件播放:TextureView、SurfaceView(视频画面帧的展示控件)

uploading.4e448015.gif转存失败重新上传取消

    1. SurfaceView优点及缺点

优点:可以在一个独立的线程中进行绘制,不会影响主线程

      使用双缓冲机制,播放视频时画面更流畅

缺点:不能进行平移、缩放等变换

b. TextureView优点及缺点

优点:支持移动、旋转、缩放等动画,支持截图

缺点:必须在硬件加速的窗口中使用,占用内存比SurfaceView高

  • 使用不同形式进行播放:

FIT(播放时的宽高和原视频相同,但视频左右留黑);

FILL(播放时的宽高和原视频相同,但只截取视频中间部分展示);

stretch(播放时的宽高和原视频相同,但视频被拉伸展示)

  • 倍速、循环、seek
  • 性能测试:

H.264、不同的播放器:

uploading.4e448015.gif转存失败重新上传取消

H.265、不同的软解码器:

uploading.4e448015.gif转存失败重新上传取消

  • 兼容性测试:

分别使用textureview和surfaceview,硬解码播放H.264、H.265编码的视频各10个;软解码播放H.264、H.265编码的视频各10个,覆盖安卓5~10,40台机型

  • 压力测试

以每秒10次的速度随机进行10000次操作(切换、暂停、快进、快退等)

  • 稳定性测试

1、连续播放72小时

2、多机型

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章