本发明涉及数据传输,尤其涉及一种音视频传输方法和系统。
背景技术:
1、当前浏览器直接支持的无插件流媒体协议包括:http流媒体传输协议(http livestreaming,hls)、http自适应比特率流媒体传输协议(dynamic adaptive streaming overhttp,dash)、web实时通信协议(web real-time communications,webrtc)、webrtc数据通道(webrtc datachannel)、websocket以及webtransport。
2、在上述无插件流媒体协议中,hls和dash由于延迟巨大,对于实时性要求较高的场合,不适合使用;webrtc是目前主流的实时通信协议,延迟可以降到300ms以下,但webrtc的rtp模块不支持h.265的传输,对于h.265编码的视频,webrtc存在缺陷;webrtcdatachannel、websocket以及webtransport协议都支持裸数据传输,都能解决h.265编码的视频传输问题,但是它们采用的传输层协议不同,其中websocket采用tcp传输协议,存在队头阻塞、实时性差的问题,webrtc datachannel采用流控制传输协议(stream controltransmission protocol,cstp)支持多路传输,但仍存在数据流的队头阻塞、链接时间长的问题,webtransport采用了快速udp网络连接传输协议(quick udp internetconnections,quic),解决了tcp和sctp中存在的问题,但还没有一套应用于webtransport协议的音视频传输方案,来解决浏览器无插件播放音视频时卡顿和黑屏的问题。
技术实现思路
1、本发明提供了一种音视频传输方法和系统,以解决现有的浏览器无插件播放音视频卡顿和黑屏的问题。
2、为了实现上述目的,本发明通过如下的技术方案来实现:
3、第一方面,本发明提供一种音视频传输方法,包括如下步骤:
4、步骤1:客户端基于http3协议与服务端建立webtransprot连接,客户端根据webtransprot连接与服务端构建一个双向数据流;
5、步骤2:客户端通过双向数据流向服务端发送播放命令,服务端对接收的播放命令进行解析,获取音视频元数据后封装发送至客户端,服务端再交替获取视频帧与音频帧,服务端将交替获取的视屏帧与音频帧封装后按照预定规则发送至客户端;
6、步骤3:客户端对接收到封装的音视频元数据和封装的视频帧、音频帧进行解码播放;
7、步骤4:客户端向服务端发送停止命令,服务端对接收的停止命令响应,服务端停止发送视频数据与音频数据,并断开webtransprot连接。
8、进一步的,所述交替获取视频帧与音频帧包括:服务端获取音视频帧的下一帧,获取其对应的时间戳,以所述时间戳为基础,按照时间递增交替获取视频帧与音频帧。
9、进一步的,在步骤2中,所述服务端构建单独的数据发送线程,并按照预定规则向客户端发送封装好的视频帧与音频帧;
10、所述预定规则包括:当封装好的视频帧过多时,按照如下公式调整发送间隔:
11、max(0.5×packetduration,packetdurtion-packetcount);
12、其中,packetdurtion为视频帧时长,packetcount为待发送的封装好的视频帧个数。
13、进一步的,所述客户端基于http3协议与服务端建立webtransprot连接包括如下步骤:
14、步骤101:客户端基于http3协议向服务端发送webtransprot连接请求;
15、步骤102:服务端使用http3协议库接口根据webtransprot连接请求的http请求头信息判断是否为webtransprot连接请求,若是则发送应答信息,所述应答信息包括webtransprot版本信息,服务端基于webtransprot版本信息与客户端建立webtransprot连接,否则,服务端与客户端断开webtransprot连接。
16、进一步的,在步骤1中,所述客户端基于webtransprot连接向服务端发送构建双向数据流请求,服务端通过所述http3协议库接口检查双向数据流请求的帧类型,判断是否为webtransprot双向数据流,是则保存双向数据流,双向数据流建立成功,否则断开webtransprot连接。
17、进一步的,所述播放命令包括起始码、命令id、音视频id,所述停止命令包括起始码和命令id。
18、进一步的,所述音视频元数据包括音频元数据和视频元数据,所述音频元数据包括音频编解码器信息、声道数、采样率,所述视频元数据包括视频编解码器信息、视频宽度、视频高度。
19、进一步的,在步骤2中,音视频元数据的封装信息包括起始码、载荷长度以及载荷数据,视频帧与音频帧的封装信息包括起始码、关键帧标志、时间戳、载荷长度以及载荷数据。
20、第二方面,本申请实施例提供一种音视频传输系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一所述方法的步骤。
21、有益效果:
22、本发明提供的一种音视频传输方法和系统,利用http3协议库进行扩展,支持webtransport和双向数据流,构建可稳定运行的webtransport服务端,且通过浏览器webapi接口实现音视频播放,无需安装任何插件。
23、本发明通过webtransport的双向数据流传输音视频数据,既有tcp的可靠性,又消除了tcp队头阻塞的缺点,比tcp性能更高;
24、在本发明的优选方案中,通过动态调整发送间隔,使得服务端实现0缓存和0延迟,提高实时性。
1.一种音视频传输方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的http3和webtransport协议的音视频传输方法,其特征在于,所述交替获取视频帧与音频帧包括:服务端获取音视频帧的下一帧,获取其对应的时间戳,以所述时间戳为基础,按照时间递增交替获取视频帧与音频帧。
3.根据权利要求2所述的http3和webtransport协议的音视频传输方法,其特征在于,在步骤2中,所述服务端构建单独的数据发送线程,并按照预定规则向客户端发送封装好的视频帧与音频帧;
4.根据权利要求1所述的http3和webtransport协议的音视频传输方法,其特征在于,所述客户端基于http3协议与服务端建立webtransprot连接包括如下步骤:
5.根据权利要求1所述的http3和webtransport协议的音视频传输方法,其特征在于,在步骤1中,所述客户端基于webtransprot连接向服务端发送构建双向数据流请求,服务端通过所述http3协议库接口检查双向数据流请求的帧类型,判断是否为webtransprot双向数据流,是则保存双向数据流,双向数据流建立成功,否则断开webtransprot连接。
6.根据权利要求1所述的http3和webtransport协议的音视频传输方法,其特征在于,所述播放命令包括起始码、命令id、音视频id,所述停止命令包括起始码和命令id。
7.根据权利要求1所述的http3和webtransport协议的音视频传输方法,其特征在于,所述音视频元数据包括音频元数据和视频元数据,所述音频元数据包括音频编解码器信息、声道数、采样率,所述视频元数据包括视频编解码器信息、视频宽度、视频高度。
8.根据权利要求1所述的http3和webtransport协议的音视频传输方法,其特征在于,在步骤2中,音视频元数据的封装信息包括起始码、载荷长度以及载荷数据,视频帧与音频帧的封装信息包括起始码、关键帧标志、时间戳、载荷长度以及载荷数据。
9.一种音视频传输系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至8任一所述方法的步骤。