MediaStreamTrack Content Hints 解读

背景

媒体流有两大类,音频和视频;音频中两种典型的场景,需要3A的(例如通话、演讲)和不需要3A的(音乐);视频中也有两种典型的场景,关注内容(帧率小一点可以接受,例如ppt讲演)和关注运动(例如运动的视频,帧率要保证,糊一点比低帧率更能接受)。如果没有为mediaStreamTrack指定内容的属性,有可能达不到预期的效果,例如对音乐进行3A,可能损失了音乐的细节;或者是对ppt讲演降低了画质,流畅是流畅了,但是看不清内容。所以,如果能明确内容的属性,编码可以更有针对性的调整。

Audio Content Hints

  • "":没有指定,那么只能去猜(可以通过当前track是如何打开的或者通过内容分析来猜测的更准)
  • "speech":指定音频源为讲演,可以适当使用噪声消除或者提升源的可理解性等
  • "speech-recognition":指定音频源为语音识别,可以适合提高输入信号的清晰度以进行转录并关闭用于人类消费的音频处理组件
  • "music":指定音频源为音乐,可能意味着调整或关闭用于处理语音数据的音频处理组件,以防止音频失真

Video Content Hints

  • "":没有指定,那么只能去猜(可以通过当前track是如何打开的或者通过内容分析来猜测的更准)
  • "motion":指定为运动,在必须做出妥协的低比特率期间,比边缘质量和细节花费更多的努力来保持帧速率
  • "detail":指定为细节,此设置通常会优化生成的单个帧中的细节,而不是平滑播放(宁愿放ppt也尽可能不要损失细节)
  • "text":指定为文本,此设置通常会针对生成的单个帧中的细节进行优化,而不是平滑播放,并且可能会利用针对文本渲染进行优化的编码器工具(比细节更具体的指出可以利用编码器工具(如果有的话)来优化)

基于Content Hints的其他模块可以做的事情

音频Content Hints

  • 当Content Hints指定为音乐的时候,音频3A(回声消除、自动增益、噪声抑制)都应该设置为false
  • 当Content Hints指定为讲演的时候,回声消除和自动增益应该设置为true
  • 当Content Hints指定为语音识别的时候,音频3A(回声消除、自动增益、噪声抑制)都应该设置为false

视频Content Hints

  • 当Content Hints指定为运动的时候,降低分辨率以保持帧率
  • 当Content Hints指定为细节的时候,降低帧率以保持分辨率
  • 当Content Hints指定为文本的时候,降低帧率以保持分辨率,当编码器的文本模式可用的时候,使用文本模式

实战应用

会议系统通常有屏幕分享的功能,屏幕分享一般默认为细节模式,这种模式在分享视频等内容时,体验会非常不好,这个时候应该提供流畅模式(指定运动模式,保证帧率)

 

参考webrtc官方文档:https://www.w3.org/TR/mst-content-hint/

posted @ 2021-10-31 18:09  2BiTT  阅读(518)  评论(0编辑  收藏  举报