技术分享| 音视频与微信小程序互通实践

这篇具有很好参考价值的文章主要介绍了技术分享| 音视频与微信小程序互通实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

随着网络架构的变迁、媒体技术发展、音视频场景迭代,基于流媒体的技术也是推陈出新。WebRTC渐渐的成为了音视频互动场景的主流,而微信在6.5.21版本通过小程序开放了实时音视频能力,开发者们可以使用组件 < live-pusher > 实现基于 RTMP 的直播推流(录制),用于实时音视频通话上行,使用组件 < live-player > 实现基于 RTMP 的直播拉流(播放)。可以看出,微信小程序的音视频是基于 RTMP 协议的,但是微信小程序的音视频只是提供了终端上的能力,并没有实现媒体服务器,腾讯给出了2个方案,1是使用腾讯云的快直播服务,2是开发者自己实现一套媒体网关服务。方案1,需要完全使用腾讯云的服务,很显然不太适合我们这样的开发者;于是留给我们的之后方案2了。

一.什么是RTMP,什么是RTC

1.RTMP

RTMP是Real Time Messaging Protocol实时消息传输协议,是Adobe公司为Flash播放器和服务器之间开发的音视频数据传输的开放协议,一般传输flv或f4v格式的媒体流。RTMP是工作在TCP之上的协议,默认使用端口1935,能够保持长连接,并为用户提供低延时通信。RTMP是目前低延时直播应用最普遍的协议,几乎是全部编码器标准输出协议,是PC机打开浏览器就能播放(通常浏览器默认有Flash),也是全部CDN支持的最好的直播分发协议。

RTMP是基于TCP协议的,且通常只占用TCP一个通道来传输数据和指令,能保证了视频的传输质量。RTMP包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMPT封装在HTTP请求之上,可穿透防火墙;RTMPS类似RTMPT,增加了TLS/SSL的安全功能;RTMPE在RTMP的基础上增加了加密功能。

因为RTMP是基于TCP之上的,所以也存在三次握手的要求,另外RTMP还增加了C0/S0到C2/S2的三次握手。所以播放一个RTMP协议的流媒体需要经过:握手,建立连接,建立流,播放。

RTMP也有不可忽视的缺点,首先,RTMP协议太老,HEVC/H.265/AV1等视频格式都没有官方定义,另外就如刚刚所说,RTMP连接过程较长,存在TCP三次握手和本身的C0/S0到C2/S2的三次握手,再加上connection,createstream,play/publish,总地来说RTMP完成一次建连需要进行9次会话。而且RTMP的拥塞控制完全依赖传输层TCP的拥塞控制算法来进行拥塞管理,无法提供带宽自适应的算法。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

2.WebRTC

WebRTC是Web Real-Time Communication网页实时通信,是一个支持网页浏览器进行实时语音对话或视频对话的技术而无需任何插件。由谷歌2010年以6820万美元收购Global IP Solutions公司而获得,如今WebRTC已经不仅仅局限于PC的网页浏览器,Android,iOS平台上很多应用都已经采用了这样技术。

WebRTC使用是RTP分装码流,跟视频监控,IPTV,会议电视一样都是RTP承载媒体流,只不过WebRTC信令遵守ICE框架,走自定义信令,IPTV领域走RTSP信令,视频监控走GB28181或者onvif信令,会议电视走h323或SIP协议。另外,WebRTC的码流采用SRTP进行加密,且WebRTC优先使用VP9、VP8、H.264、AV1,暂不支持H.265。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

二.WebRTC如何跟小程序互通

1.如何互通大概分三步走:

A.微信小程序端使用 RTMP 协议,接入边缘媒体网关,即 Xcx网关;

B.Xcx网关支持 RTMP 协议接入和输出,完成微信小程序间的媒体转发;

C.同时Xcx网关将 RTMP 协议转换成 RTP 协议,转发给anyRTC的WebRTC服务器,完成与Native、标准 WebRTC 终端的互联互通。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

anyRTC的Xcx网关的主要工作就是对RTMP和WebRTC的音视频格式进行转换。一般RTMP的视频是H264编码,音频是AAC编码;WebRTC的视频是H264编码,音频是Opus编码。所以我们可以看出,视频只需要转换封装格式,而音频则需要进行转码工作。

2.视频格式转换

anyRTC的Xcx网关收到视频帧之后,将帧进行RTP 封装 H.264。

WebRTC 选择了使用 RFC3984 的 Non-Interleaved 封装方案对H.264 进行封装。
微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换
Single NAL Unit Packet

Single NAL Unit Packet 是 RTP 最基本的打包方式,其中,
forbidden_bit:禁止位,初始为0,当网络发现 NAL 单元有比特错误时可设置该比特为 1,以便接收方纠错或丢掉该单元。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

nal_reference_bit:nal 重要性指示,标志该 NAL 单元的重要性,值越大,越重要,解码器在解码处理不过来的时候,可以丢掉重要性为 0 的 NALU。Type:NAL 单元中的 RBSP 数据结构的类型,其中 0 未指,1-19 在 H.264 协议中有定义,20-23 为 264 协议指定的保留位,24-29 在 RFC3984 中进行了指定。Type 后面的数据为 RBSP 的数据,需要注意的是:编码器的每个 slice 或者每帧头一般会有由0x000001 或者 0x00000001 作为起始头,在 RTP 封装中需要去掉。此外在 H.264 裸码流数据后面可能还会带有 padding 的数据由 RTP 头的 padding 位决定。

STAP-A

STAP-A 的作用是可以把多个 nal 单元封装在一个 RTP 包里面进行传输,需要注意:-A 的格式都是不允许跨帧的,也就是 nal 单元的时间戳必须是相同的。常见的场景是 sps 和 pps 两个小包被合并封装。
微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换
RTP 头后面仅跟着 STAP-A 的头,由 F、NRI 和 Type 组合而成,占一个字节,这里的 Type 为 24。后面两个字节为第一个 nalu 单元的长度,后面跟第一个 nalu 数据同 Single NAL Unit 的封装一致,第一个数据结束后,跟着第二个 nalu 的长度,占 2 个字节,依次类推。

FU-A

FU-A 的作用是把一个原始大的 nalu 切成多个数据包进行传输,主要使用场景在 slice 比较大的情况下。FU-A 比较特殊,有 FU-A 起始包、FU-A 包(如果只切两个包可能没有)和 FU-A 结束包组成。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

FU indicator 占一个字节,由 F、NRI 和 Type 组合而成,这里的 Type 为28。FU header 占一个字节:

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

S: 占1位如果是1表示当前这个包是 FU-A 的起始包E: 占1位如果是1表示当前这个包是 FU-A 的结束包R: 占1位,保留位,为0Type: 实际包含 nalu 的类型。

音频转码

在Xcx网关中,我们采用了独立的音频转码线程组,减轻逻辑处理线程的压力的目的。每个转码任务将被分配到固定的音频转码线程,线程根据任务数量进行负载均衡。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换

三.总结

与小程序的互通相对来说还是比较容易实现,开发者可以选择anyRTC的小程序服务,避免过多的踩坑;也可以尝试自己实现一套服务来满足自身的业务诉求。

微信小程序音视频 wmpf,音视频,小程序,webrtc,音视频,微信小程序,rtmp,webrtc,视频格式转换文章来源地址https://www.toymoban.com/news/detail-627195.html

到了这里,关于技术分享| 音视频与微信小程序互通实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 技术分享| anyRTC音视频混流技术解析

    在视频通讯场景中,比如会议、直播等经常能看到图像合成的场景。图像合成是在指定的一块画面区域,在这个区域内,按画面的位置(坐标)布局,将区域中的每个视频画面的像素混合计算成一个像素(RGB)。比如以下是anyRTC的H323合成画面: 如图所示,一幅图像或画面是由很

    2024年02月07日
    浏览(44)
  • 微信小程序 - 超详细 “纯前端“ 将文件上传到阿里云 OSS,最新阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端,前端文件直传阿里云oss服务器)

    网上的教程乱七八糟却文件少代码(并且没注释),而且都已经很老了,对于新手来说真的无从下手。 本文站在新手小白的角度, 实现微信小程序开发中,“前端直传” 上传文件到阿里云oss对象存储的详细教程, 无需后端 (纯前端自己完成所有签名、上传),保证 100% 成

    2024年02月13日
    浏览(159)
  • 抖音视频提取工具可导出视频分享链接|视频爬虫批量下载

    抖音无水印视频批量下载工具操作指南 一、工具介绍 我们开发了一款功能强大的视频批量下载工具,不仅能够通过单个视频链接进行提取,还可以通过进行视频搜索,Q:290615413实现批量提取和有选择性的下载。 二、操作步骤 2.1 批量提取视频 进入软件,点击“

    2024年04月15日
    浏览(205)
  • 抖音视频如何下载保存(方法分享)

    有时刷抖音视频,看的喜欢的视频想要下载到本地,但是有很多视频无法下载或者下载下来是有水印的,那怎么办呢? 抖音视频下载有两种情况: 一种是可以直接点击分享下载,然后可以直接点击保存到相册。 视频就自动下载下来了,但是这直接下载下来的视有水印。 还有

    2024年04月14日
    浏览(112)
  • 音视频直播核心技术

    采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 iOS、Android、Mac、Windows 等。 前处理: 主要就是美颜美型技术,以及还有加水印、模糊、去噪、滤镜等图像处理技术等等。 编码: 就是音视频数据的压缩,便于传输,一般有软编码和硬编码,软

    2024年01月20日
    浏览(54)
  • 5G时代下,Android音视频强势崛起,我们该如何快速入门音视频技术?

    作为Android开发者的我们到底应不应该上音视频这条船? 接下来一起分析下。 大趋势 从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必需品。除了在线教育、音视频会议、即时通讯这些必须使用音视频技术的产品外,其它的产品也需要加入音频、

    2024年04月15日
    浏览(79)
  • 软件分享——Bilibili缓存视频合并软件,m4s音视频合并工具

    bilibili缓存下来的视频,路径android/data/tv.danmaku.bili/download 此目录是bilibili缓存的视频存放目录,是m4s格式的音频和视频文件,不能正常播放。 你可以使用视频合并工具ffmpeg将他们合并成一个文件,命令是 但是如果你有几十上百个视频呢?推荐bilibili视频批量合并工具,他会扫

    2024年02月16日
    浏览(67)
  • 音视频技术开发周刊 | 305

    每周一期,纵览音视频技术领域的干货。 新闻投稿:contribute@livevideostack.com。 大神回归学界:何恺明宣布加入 MIT 「作为一位 FAIR 研究科学家,我将于 2024 年加入麻省理工学院(MIT)电气工程与计算机科学系 EECS 担任教职。」 AI 领域的著名学者,ResNet 发明人何恺明,最近在

    2024年02月14日
    浏览(52)
  • 音视频技术开发周刊 | 285

    每周一期,纵览音视频技术领域的干货。 新闻投稿:contribute@livevideostack.com。 GPT-4 Office全家桶发布 谷歌前脚刚宣布AI工具整合进Workspace,微软后脚就急匆匆召开了发布会,人狠话不多地祭出了办公软件王炸——Microsoft 365 Copilot,再次闪瞎全世界。从此,不管是Word、PPT、Exce

    2024年02月02日
    浏览(67)
  • 音视频技术开发周刊 | 297

    每周一期,纵览音视频技术领域的干货。 新闻投稿:contribute@livevideostack.com。 Geenee AR为品牌商和零售商提供虚拟试穿应用 这意味着Geenee AR的虚拟试穿解决方案能够与品牌商现有的销售渠道无缝集成。 谁说苹果掉队了?WWDC上只字未提AI,却已低调入场大模型 尽管苹果没有在

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包