音视频

谷歌悄悄在 Chrome 中添加了 HEVC:h265 视频支持

悄悄地,在支持页面上没有任何公告或更新的情况下,Google 修复了 Chrome 中的一个对视频流媒体行业具有重大影响的错误:终于启用了对 HEVC/H.265 视频内容的自适应流媒体的支持! 

感谢 Bitmovin(Humble Brag,开个玩笑),我们在大约 6 年前提交了一份关于这件事的错误报告。经过“小”的等待,我们得到了 Chrome 104 现已正式支持的答案,并且经过一番调查还发现它默认为所有平台的 Chrome 105 启用,准备在野外使用。 

直播卡顿原因详解及优化

随着视频直播的发展,很多直播团队可能会遇到视频直播卡顿,频繁出现缓冲标志或者直播画面一卡一卡等情况。究竟是哪些原因造成了视频直播观看的卡顿情况呢?

又拍直播云结合实践经验,从设备、视频流、网络这三方面进行解剖分析造成直播卡顿的问题及其解决方法。

视频直播卡顿原因

造成直播视频卡顿的原因主要有设备、视频流、网络这三方面的问题。

问题排查及解决方法

设备

高清视频往往会给硬件带来解码压力,由于解码造成的卡顿尤为明显。同时如果PC端Flash Player或移动端播放软件版本过低,可能也会造成解码问题导致播放卡顿情况。

如果是这个原因,解决方法有以下几点:

  • 升级硬件、软件设备,提高兼容性和容错率;
  • 使用硬编硬解方案,充分利用GPU 加速;
  • 降低视频码率,选择流畅或者标清画质进行视频播放;
  • 增大播放器缓冲区,缓解因网络或解码不稳定引起的卡顿。

视频流

音视频时间戳不同步

在直播中,当音视频时间戳不同时,会影响画面渲染,导致画面解析时出现问题,造成一卡一卡的现象,如下图所示,音视频时间戳非单调递增会导致播放器在解析画面时出现错乱的情况,前后画面衔接会出现不连续甚至花屏的现象。

△ 音画不同步

针对此类问题,我们需要对推流器的源码进行研究,把读取到的每一针音频、视频的时间戳进行查阅、分析,然后通过程序干涉推流器或者流媒体服务器,矫正逻辑值,从而使音画同步。

视频流参数配置问题

如果视频的帧率设置过低(帧率即每秒的画面张数),根据人眼的视觉暂留原理,每秒的画面张数必须达到一定的数值,人眼观看才是连续有效的。导致视频流的编码方式与传输服务器有不兼容的情况,部分音视频数据出现了解析错误甚至无法解析的情况,也会出现视频流播放卡顿的问题。

如果是这个原因,解决方法有:

  • 设置合理的码率,帧率,分辨率,关键帧间隔,音视频编码格式等参数;
  • 尽量遵循标准的视频编码方案,流媒体传输协议,对视频流进行采集,编码,解码,播放等操作。

网络

直播网络目前存在三种情况:无线、有线、4G。

无线网络:WIFI 连接的直播受距离、环境等使用因素的影响,需要让设备尽量靠近 WIFI 信号源,避免穿墙或金属物遮挡,保持信号强度,带宽6M以上,同时避免其他设备接入 WIFI 信号源抢占信号;

有线网络:直播场地有专门的网口使用,最好是专线网络,上下行带宽不少于4M;

4G网络:手机网络受到周围的环境影响大,需要在手机信号良好的地方,并且防止网络波动,在直播时最好选择4G卡。

上传网络

当主播端网络较差时,会导致推流端上行不稳定,这个时候可以通过 speedtest 

音视频通信加餐 —— WebRTC一肝到底

最近需要搭建一个在线课堂的直播平台,考虑到清晰度和延迟性,我们一致认为使用 WebRTC 最合适。

原因有两点:首先是“点对点通信”非常吸引我们,不需要中间服务器,客户端直连,通信非常方便;再者是 WebRTC 浏览器原生支持,其他客户端支持也很好,不像传统直播用 flv.js 做兼容,可以实现标准统一。

然而令我非常尴尬的是,社区看了好几篇文章,理论架构写了一堆,但没一个能跑起来。WebRTC 里面概念很新也很多,理解它的通信流程才是最关键,这点恰恰很少有描述。

于是我就自己捣鼓吧。捣鼓了几天,可算是整明白了。下面我结合自己的实践经验,按照我理解的关键步骤,带大家从应用场景的角度认识这个厉害的朋友 —— WebRTC。…

    

关于H.264的码率,720P、1080P输出比特率设置

现在最低建议720p视频的比特率以上,h.264编码,2M比特率合适;1080p就4M足够可以自己拿个高清视频,分别用不同码率转换,再对比画质。最普遍使用的是:h.264编码,1080P,2.5M比特率以上。总结:【h.264编码,比特率2.5M(最大要到4M就行了),最大比特率4M(在目标上加2M就行),大多平台都以是蓝光了。】

1、比特率高过原视频不会有一点高过原视频的。一搬都会选低点把文件压小点。2、1080P比特率1M有失真感电脑端观看,用2M看不出失真,可把比特率制调到4M最佳。以下是某平台比特率上传要求:

CBR 与 VBR(固定码率与可变码率):哪个最适合您的在线直播视频平台

启动流媒体服务看起来很复杂,尤其是当您不熟悉为您的视频平台选择正确的编码器设置时。如果您是编码和流媒体领域的新手,那么广泛的选项会让您感到困惑,特别是 CBR 和 VBR 等术语。那么,什么是 CBR 和 VBR 编码?哪个更好——CBR 与 VBR?放松!喝杯咖啡,在接下来的几分钟内,您将得到所有问题的答案。

    

什么是 STUN、TURN 和 ICE?

我们技术人员喜欢我们的首字母缩略词,但 ICE、STUN、TURN、TURN... 可能有点多。这些东西到底是什么?它们为什么存在,LiveSwitch 如何使用它们?本文的目的是揭开这些技术及其使用的神秘面纱。

最终,实时应用程序的目标是各种客户端之间的高吞吐量、低延迟通信,这些客户端可能(或可能不会)在限制性防火墙规则之后。这意味着以下网络通信协议的首选优先级:

  1. UDP - 直接在媒体流的源和目标之间。
  2. UDP - 媒体流的源和目标之间的间接(中继)。
  3. TCP - 通过 TCP 在媒体流的源和目标之间间接(中继)。
  4. TCP/TLS - 媒体流的源和目标之间的间接(中继),通过 TCP,具有额外的加密层。

什么是 STUN/TURN 服务器?

现实世界连接中的 WebRTC 通信需要处理多方呼叫并与 STUN 和 TURN 服务器交互。


我们的视频网关 (WebRTC)平台通过传输所有音频/视频/数据流,为所有客户提供先进的视频实时通信解决方案。通常,视频网关必须部署在公共互联网上,因此任何用户都必须通过 RTP(实时传输协议)端口连接和发送媒体片段,而不会出现特定的网络问题。

Ubuntu环境搭建Coturn(stun和turn服务器)

一、gitHub下载coturn源码

https://github.com/coturn/coturn.git

二、进入到源码目录,编译源码

./configure --prefix=/usr/local/coturn

2-1:编译异常

image.png

2-2:下载相关库文件:libevent和libssl

sudo apt-get install libssl-dev libevent-dev

2-3:编译通过

image.png

2-4:安装

make -j 4 
sudo make install

2-5:进入安装路径,查看相关文件

cd /usr/local/coturn

image.png

2-6:配置环境变量

vim ~/.bashrc
2-6-1:插入以下内容
export coturn_home=/usr/local/coturn
export PATH=$PATH:$coturn_home/bin
2-6-2:使配置的环境变量生效,执行以下命令
source ~/.bashrc

三、配置turnserver.conf

3.1修改配置文件

进入安装目录**(/usr/local/coturn)**下的etc文件件,里面会默认一个turnserver.conf.default,直接拷贝一份,命名为turnserver.conf,然后打开turnserver.conf,找到下面的内容,修改为自己的真实数据即可

    

WebRTC 终极指南

webrtc-图标  什么是 WebRTC?

Web 实时通信 (WebRTC) 既是一个开源项目,也是一个规范,它支持实时媒体通信,如语音、视频和数据在浏览器和设备之间的本地传输。这使用户无需复杂的插件或额外的硬件就可以在他们的主要 Web 浏览器中进行通信。

WebRTC 项目于 2011 年 5 月由 Google 首次宣布,作为开发一套通用协议的一种手段,用于在浏览器、移动平台和物联网设备中启用高质量的 RTC 应用程序。当时,Flash 和插件是提供实时通信的唯一方法。两年后,经过大量工作,Chrome 和 Firefox 之间建立了第一个跨浏览器视频通话。随着越来越多的组织增加对规范的支持,开发者社区对 WebRTC 的支持也随之飙升。今天,WebRTC 在 Chrome、Firefox、Safari、Edge、Android 和 iOS 中本地(不同程度地)可用,并且是一种广受欢迎的视频通话工具。…