与SVC不同,Salsify能即刻响应网络带宽的变化,从而调整视频帧的大小来避免网络拥堵,这样可以最大限度的保证实时视频流的流畅度。但这会带来额外的编码开销,并且由于没有硬件解码器的支持,Salsify可能只能在一些对视频流畅度有极端要求的场景下被采用。LiveVideoStack对原文进行了编译。

文 / Nadine Krefetz

译 / 纵一苇之所如

审校 / Ant

原文:

http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Re-Engineering-Real-Time-Video-Delivery-125300.aspx

斯坦福大学的一个科研项目——Salsify已经可以为实时通信应用(比如电话会议)提供更好的视频传输方式。

他们没有创建新的视频格式,而是创建了一种用于实时视频系统的新架构。Salsify并没有使用现有的两个独立控制环路的方式(其中一个用于传输,另一个用于视频编解码器),而是将他们连接成一个统一的控制环路来共同管理传输和视频编解码器。

视频编码器目前就像一个黑盒子——编/解码功能将视频转化成适合传输的大小,之后用传输协议进行视频的分发。Salsify项目使得整个系统对可用带宽的变化响应更加快速。从理论上讲,Salsify会带来更好的整体体验。

当前的传输方式

目前的视频传输框架,视频编解码器和传输协议各自独立运行,导致视频流对于网络来说可能太大或太小。斯坦福博士候选人和Salsify项目成员Sadjad Fouladi希望所交付的视频适合网络状况,从而减少故障和连接丢失,并减少缓存。

他们创建了一个实时视频系统,能够快速响应不断变化的网络状况并避免拥塞和故障。Salsify会根据当前网络容量的估算值来提供在这种情况下可以交付的视频帧。

他们的研究项目与FaceTime,Google Hangouts,Skype和WebRTC在谷歌浏览器中的参考实现相比,无论是否支持可伸缩视频编码(SVC),都能实现更低的视频延迟和更好的视频质量。对于视频会议,远程医疗或其他对视频传输延迟比较敏感的实时通信而言,低延迟比实时流式传输更为重要。

Fouladi说,“很多人在视频会议中遇到过连接不畅以及视频质量较差的情况,我们认为问题不在于编解码器,也不在于传输,而在于这些组件的集成方式。但是这些系统的整体性能并没有得到太大的提升,所以我们认为现在应该为整个系统建立新的架构,而不是改进单个组件。”

低延迟

Fouladi说,在诸如Skype的产品或WebRTC的协议中,传输协议不能很好地控制流。即使现在由于连接不通或网络拥塞不适合发送数据,传输协议仍然需要发送已经编码的帧。

目前的传输协议对传送给视频编解码器的网络速度有一定的估计。单帧的输出大小通常低于或超过估计的网络速度。如果该帧太大或太小,则会通过调整下一帧进行补偿。

在大约十到二十帧的过程中,它达到了平均网络速度。所以虽然理论上自纠正机制可行,但实际上一个比较大的帧仍然会导致拥塞和丢包,这将导致流延迟。此外,仅在平均水平上达到一定码率会使系统对网络变化反应迟钝。

底层

Salsify只关注下一帧的大小,而不是像之前编解码器那样根据平均比特率来进行编码。它的目标是确保没有任何视频帧会导致网络中的丢帧和拥塞。Salsify不是预估编码参数,而是为每个视频帧编码两个质量略有不同的版本,然后选择适合网络条件的版本并随时进行调整。“通过这种方式,传输过程可以对视频进行逐帧控制,并且可以更快地响应不断变化的网络条件。”Fouladi说。

Salsify的功能性视频编解码器为视频编解码器提供了一个保存/恢复状态的接口,使其能够更加方便地执行不同的参数配置,从而为传输提供了一个选项菜单。在传统的编解码器中,如果一帧被编码,它就成为了视频流的一部分,并且必须被发送,而在Salsify的编解码器中,该帧可以被丢弃并且旧状态可以恢复。

“所以在这种情况下,如果网络出现故障或者发生了非常糟糕的状况,那么即便编解码器已经编码出可用帧,传输端都可以停止发送,以避免造成更严重的拥塞”,Fouladi说。与FaceTime,Hangouts,Skype和WebRTC相比,该项目使用该团队自主研发的VP8编解码器,平均可以带来4.6倍p95-delay的降低,以及2.1 dB SSIM的提升,并且有更高的主观质量。

Fouladi说,“现在我们可以访问黑盒子的内部,而且可以设计更复杂的系统,可以做更多的事情。我认为这个项目的目标之一是展示具有这个接口的好处,并说服编解码器设计者和实现者在未来的编解码器中包含该接口。”

Salsify开源编解码器仅限视频(无音频)。该项目是基于软件的编解码器,而且为每一帧编码两个版本会明显增大计算开销。为了在硬件上实现,他们将有与AV1一样漫长的道路要走,因此为了Salsify的实际应用,需要有更加创造性的思维。虽然他们面临很多挑战,但Salsify团队已经制定了一种方法来解决长期存在的问题。

更多信息请参考https://snr.stanford.edu/salsify。

LiveVideoStackCon 2018讲师招募

LiveVideoStackCon 2018是音视频技术领域的综合技术大会,今年是在10月19-20日在北京举行。大会共设立16个专题,预计邀请超过80位技术专家。如果你在某一领域独当一面,欢迎申请成为LiveVideoStackCon 2018的讲师,让你的经验帮到更多人,你可以通过speaker@livevideostack.com 提交演讲信息。了解大会更多详情,请点击『阅读原文』访问LiveVideoStackCon 2018官网,即刻享受6折优惠。

Salsify:高流畅度的实时视频传输新方式相关推荐

  1. 复杂业务如何保证Flutter的高性能高流畅度?

    作者:闲鱼技术-三莅 背景 高性能高流畅度一直是Flutter团队宣传的一大亮点,也是当初闲鱼选择Flutter的重要因素之一,但是随着复杂业务的应用落地,通过Flutter页面和原生页面滑动流畅度对 ...

  2. 网易云游戏来了:手机电脑电视随时接入可玩,高流畅度低延迟,还能跨终端无缝切换...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 囿于版号的游戏行业,终于快 ...

  3. 案例分享:Qt+C#轨道交通行业高性能高流畅度模拟火车移动图像控件

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/114866533 长期持续带来更多项目与技术分 ...

  4. 淘特 Flutter 流畅度优化实践

    作者:谢伟(韦圣) 不同的业务背景引出不同的技术诉求,"用户体验特爽"是淘特的不懈追求,本文将介绍笔者加入淘特以来在Flutter流畅度方面的诸多优化实践,这些优化不涉及Engin ...

  5. 他把闲鱼APP长列表流畅度翻了倍(良心教程)

    简介:从"麻绳版顺滑"到"丝般顺滑" 作者:闲鱼技术-云从 1 整体思路 闲鱼在业务的快速迭代过程中,app 的长列表滑动流畅度逐步恶化,对用户浏览内容体验产生 ...

  6. google有自定义文章流畅度的伪原创工具吗

    写好文章是googleseo里面非常重要的一项工作,seo永远遵从:内容为王.外链为黄的基本原则,一篇好的文章是做好seo的关键,也能带来很多的流量曝光,从而提升转化. 那好的文章怎么来呢?有两种方式 ...

  7. 鸿蒙系统对手机性能的提升,鸿蒙OS手机版再爆新特性,流畅度和性能大幅提升,用户评价很高...

    原标题:鸿蒙OS手机版再爆新特性,流畅度和性能大幅提升,用户评价很高 不受限制地影响真好,但凡是都要有一个循序渐进的过程.华为自从公布鸿蒙OS手机版之后,用户都迫不及待地想体验.如今它真的来了,而且体 ...

  8. 鸿蒙系统跑分对比骁龙强吗,跑分确实高了:鸿蒙系统安兔兔跑分出炉,但不足以解释系统流畅度...

    原标题:跑分确实高了:鸿蒙系统安兔兔跑分出炉,但不足以解释系统流畅度 自从鸿蒙系统发布之后,这款系统究竟体验如何,就成了很多人关注的焦点.但由于不是人人都有华为最新Mate系列和P系列旗舰,所以很多人 ...

  9. ios分屏_华为推送新系统,荣耀9系列全面升级,流畅度比肩苹果iOS

    作为国产手机品牌的代表,华为近几年一直保持着高频率的创新能力,而这不仅体现在手机产品的外观设计.硬件配置方面,软件系统也是创新力最直观的表现,尤其是EMUI10.1系统,在市场上始终保持着极高的热度. ...

最新文章

  1. 一文教会你什么线程安全以及如何实现线程安全
  2. java当前月份减一个月_在java编程中怎样用%表示当前月份的上一个月和下一个月...
  3. 信息学奥赛C++语言:求各位数和2
  4. python实现根据文件名找出(拷贝/剪切)同名文件的不同类型文件
  5. CodeForces - 986E Prince's Problem
  6. 机器学习—线性回归推广及案例
  7. static_cast,reinterpret_cast,const_cast,dynamic_cast:
  8. 4、线程--线程同部
  9. html自定义菜单按钮图片,editormd,markdown 自定义导航栏按钮
  10. 网站SQL注入漏洞检测
  11. 如何在ppt中生成柱状图_在PPT中怎么制作图表?PPT制作图表的方法
  12. java代码实现CGCS2000大地坐标系经纬度转换为对应XY值
  13. c# - 美元符号是什么$
  14. Openbravo如何新建一个调用
  15. html设置图片为黑白,CSS 将彩色图片转换成黑白图片
  16. [单调栈 扫描线] BZOJ 4826 [Hnoi2017]影魔
  17. 如何查看手机上chrome浏览器的console日志打印
  18. js中break和continue的区别
  19. Java 面试题(持续更,最后一次更新时间:2021/4/2)
  20. 卸载 Navicat!正版 MySQL 可视化管理工具,功能真心强大!

热门文章

  1. LNMP部署(分享十七)
  2. spring-注入array集合
  3. Expected an Objective directive after @ 的解决办法
  4. Greenplum 表空间和filespace的用法
  5. Running Nutch in Eclipse
  6. ngnx 301 302跳转配置方法
  7. C++不区分大小写比较string类似CString.compareNoCase
  8. 关于MySql插入数据的乱码问题
  9. 牛客 - Firework(多源起点的最短路)
  10. 牛客 - 减成一(差分数组)