巴蜀网

 找回密码
 免费注册

QQ登录

只需一步,快速开始

同板块主题的 前一篇 同板块主题的 后一篇
开启左侧
查看: 202|回复: 0
1# 贡嘎山
跳转到指定楼层

[纪实·新闻干货:细数视频交友SDK的开放策略

 [复制链接]
源自:雷锋
  雷锋网(公众号:雷锋网)按:本文作者冼牛,即构科技市场运营总监,香港大学MBA,十年研发经验,音视频云服务技术专家,专注连麦互动直播技术应用研究。
  有好多次视频社交行业的开发者提到,某厂商的视频交友SDK测试的时候性能效果还可以,可是接入过程中和接入后就遇到各种各样的坑:
  1)无法自行定制采集和渲染。
  2)无法获得原始语音视频数据,进行保存、前处理和编码等定制化操作。
  因此,视频交友SDK的开发策略也要重点考量。
  数据流动
  视频交友SDK选择在数据流动的各个环节开放接口。语音视频实时通讯本质上是语音视频数据的实时流动,数据流通的各个重要环节如下:
  上图展示了语音视频数据从推流端流动到拉流端的各个环节:采集(包含语音3A前处理)、前处理、编码、推流、拉流、解码和渲染。
  视频交友SDK以上就是开发者负责的业务层,这七大环节都是在视频交友SDK以下实现的。这七大环节都是被视频交友SDK封装好的。完全封装的好处是一方面可以让开发者专注业务层的逻辑,另一方面让业务层和SDK完全解耦。不足是开发者一定程度上失去了对底层语音视频数据的控制力。
  有些视频社交SDK厂商向开发者开放部分接口,也有厂商完全不开放任何接口。每一家视频社交SDK厂商的开放策略都不一样。使用视频社交SDK的开放接口能获得多少对底层语音视频数据的控制力呢?
  今天让我们讨论一下视频交友SDK的开放策略。
  采集
  采集端是语音视频数据的来源,包括但不限于硬件设备(麦克风和摄像头)、屏幕共享、语音视频文件播放和游戏直播画面等。
  如果采集端是硬件设备,那么视频社交SDK可以驱动麦克风和摄像头来获得语音视频数据。如果采集端不是硬件设备,那么开发者要采用外部采集的方式让SDK获得语音视频数据。
  一般来说,有三种场景是需要进行外部采集的:
  1)普通的硬件设备无法满足业务需求,开发者已采用特殊的硬件设备来实现了大量业务。
  2)开发者需要使用摄像头完成额外的功能,和视频社交SDK 的默认逻辑产生冲突,导致摄像头无法正常使用。比如说,在视频通话过程中,业务层要求中断通话,用摄像头来录制短视频。
  3)语音视频数据并非来自摄像头和麦克风,而是来自虚拟设备、语音视频文件或者现有的语音视频流。比如说,语音视频文件播放、屏幕分享和游戏直播等。
  在需要进行外部采集的场景中,视频社交SDK要开放采集环节的接口来支持。否则,开发者就只能从摄像头和麦克风等硬件设备直接获取语音视频数据,业务开发就会面临极大的局限性。
  视频社交SDK开放了采集环节的接口,允许开发者进行外部采集,开发者的自由度和掌控力一下子海阔天空。
  然而凡事都有两面:语音3A前处理是在采集环节完成的,因此,如果进行外部采集,开发者就要自行实现语音3A前处理。语音3A前处理包含回声消除(AEC),噪声抑制(ANS)和自动增益控制(AGC),也就是所谓的语音3A,是视频社交行业公认的技术难题。
  前处理
  前处理是指对语音视频原始数据在编码之前进行的处理,包括语音3A和其它特殊的效果。语音3A是在采集环节完成的,除此以外还有其它的语音和视频的前处理,将在本环节完成。
  语音前处理是编码前的语音特效处理,包括混响和变声等。混响能让声音听起来像来自旷野,变声能让人声由男生变女生,或者产生电子声特效,以此增强语音通话的趣味。
  视频前处理是编码前的视频特效处理,包括美颜、萌颜、挂件和滤镜效果等,能让画面显得妙趣横生,以此增强视频社交的乐趣。
  如果视频社交SDK开放了前处理的接口,那么开发者可以自行实现语音和视频的前处理模块,或者对接第三方的语音和视频的前处理SDK。否则,对开发者来说,视频社交SDK以下的语音视频处理都是黑盒子,业务层无法对其做任何控制。
  笔者在即构科技获得的数据表明,美颜和萌颜有着广泛的市场需求,这两个模块是视频社交SDK的标配。另外,市场上有一些优质的第三方美颜SDK,视频社交SDK应该开放前处理的接口,让开发者自由选择是采用视频SDK自带的美颜功能,还是自行实现,或者对接第三方厂商的美颜SDK。只有这样,开发者才真正拥有自由度和掌控力,进行积极的业务创新。
  编码
  编码这个环节留给开发者的余地不多:开发者基本不会自行开发或者改造编解码器。然而,一些有经验的开发团队仍然有自行编码的需求,原因有如下两个:
  1)开发者对调制编码器的参数来适配种类繁多的安卓机型十分有经验和信心,决定自行编码。开发者可以自行灵活地配置编码器的参数,从而达到更好地适配各种安卓机型的效果。
  2)开发者之前已经实现了大量调用编码器的逻辑,而且相信自行编码的效果更好。为了保护已有投资,开发者往往倾向于自行编码。
  需要特别注意的是,开发者自行编码这种做法有得也有失:好处是开发者获得了更大的掌控力和自由度;坏处是视频社交SDK将无法为开发者提供码率自适应的功能。
  如果要理解背后的原因,让我们先了解码率自适应的原理:视频社交SDK实时监控网络状况,使用算法预测网络状况的变化,然后根据预测结果动态调整编码器的参数,编出和网络状况相适应的码流。编出来的码流的码率、分辨率、帧速等参数能让实时通讯在当时的网络情况下保障良好的QoS。
  如果视频交友SDK负责编码,那么它就能实现码率自适应功能。如果开发者负责编码,那么视频交友SDK就无法控制编码器来编出适应网络状况变化的码流,因此无法做到码率自适应。
  网络传输
  网络传输环节是实时通讯的核心中的核心,通过FEC、ARQ、流控码控和抖动缓冲等关键算法来实现实时传输架构,从而达到超低延迟的效果。
  根据笔者的了解,还没有厂商全面开放网络传输环节。即构科技的做法是:支持开发者自行推流到即构的服务器,然而拉流端拉流的时候必须要使用即构的视频社交SDK。这样既可以保持了SDK的开放性,兼容开发者原有的系统,又可以保障拉流端获得低延迟的体验。
  这种做法背后的逻辑比较好理解:视频交友SDK的核心价值是实时性,延迟超低。因为厂商在实现超低延迟上有专长,所以开发者才采用厂商的视频交友SDK。如果厂商把这个核心环节开放给开发者自行实现,那么厂商就失去了它的核心价值。
  解码
  解码环节和编码环节相对应,把接收到的语音视频流解码然后渲染。解码环节没有什么可以供开发者发挥的余地。开发者一般没有自行解码的需求,厂商一般也没有开放解码环节的接口。
  渲染
  渲染就是把语音数据播放出来和把视频画面显示出来。开发者对声音数据的播放没有额外的定制需求,然而对视频画面的显示却有很多定制的玩法。比如说,把多个视频流渲染在同一个view里面,让画中画和大画面相互切换,横屏左右画面进行对调等。
  如果开发者想要实现一些更加酷炫的玩法,就需要自行进行渲染定制化了。如果视频交友SDK开放了渲染环节的接口,那么开发者可以进行渲染定制化。否则,只能接受视频SDK自带的渲染功能。开发者要进行定制化的渲染还有一个前提:语音视频流没有被混合,拉流端获得的是多个分离的语音视频流。如果语音视频流已经被混合成一路流,那么开发者能够处理的就只有一个画面,能够创新的玩法就少了许多。
  分享一下笔者在即构科技获得的客户统计数据。在实时语音视频的七个环节中,即构开放了采集、前处理、编码和渲染四个环节。根据客户的统计数据显示,主要有如下四组选择,而绝大部分客户选择了第一个组合。
  如果视频交友SDK把七大环节完全封装起来,开发者虽然不用操心,但是也失去了掌控力。因此,开发者在选型阶段要进行慎重的分析。开发者可以从厂商的开放策略进行判断,该SDK是否给予开发者足够的掌控力进行业务创新?是否允许开发者自由替换成其它厂商的SDK或者自行研发?
  开发者把语音视频实时通讯的能力托付给厂商,自然是经过一番衡量和取舍的决定。如果时间、成本和技术积累允许的话,笔者相信大部分开发者都是希望自行研发的。
  因此,厂商应该从开发者的角度出发,满足开发者的需求,同时也打消开发者的顾虑,充分地开放语音视频实时通讯各个环节的定制化接口。这样才能真正不负开发者所托。
『 巴蜀网 』提醒,在使用本论坛之前您必须仔细阅读并同意下列条款:
  1. 遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规,并遵守您在会员注册时已同意的《『 巴蜀网 』管理办法》;
  2. 严禁发表危害国家安全、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容;
  3. 本帖子由 上官123 发表,享有版权和著作权(转帖除外),如需转载或引用本帖子中的图片和文字等内容时,必须事前征得 上官123 的书面同意;
  4. 本帖子由 上官123 发表,仅代表用户本人所为和观点,与『 巴蜀网 』的立场无关,上官123 承担一切因您的行为而直接或间接导致的民事或刑事法律责任。
  5. 本帖子由 上官123 发表,帖子内容(可能)转载自其它媒体,但并不代表『 巴蜀网 』赞同其观点和对其真实性负责。
  6. 本帖子由 上官123 发表,如违规、或侵犯到任何版权问题,请立即举报,本论坛将及时删除并致歉。
  7. 『 巴蜀网 』管理员和版主有权不事先通知发帖者而删除其所发的帖子。
解码日本人形机器人:寻找有“心”的人类伙伴 互联共赢 三星携中国开发者推进移动生态
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

© 2002-2024, 蜀ICP备12031014号, Powered by 5Panda
GMT+8, 2024-5-16 04:18, Processed in 0.171601 second(s), 10 queries, Gzip On, MemCache On
同板块主题的 后一篇 !last_thread! 快速回复 返回顶部 返回列表