CN105530453B - 用于WebRTC的视频数据发送方法及装置、接收方法及装置 - Google Patents

用于WebRTC的视频数据发送方法及装置、接收方法及装置 Download PDF

Info

Publication number
CN105530453B
CN105530453B CN201511017695.5A CN201511017695A CN105530453B CN 105530453 B CN105530453 B CN 105530453B CN 201511017695 A CN201511017695 A CN 201511017695A CN 105530453 B CN105530453 B CN 105530453B
Authority
CN
China
Prior art keywords
video data
webrtc
framing
packet
encoded video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201511017695.5A
Other languages
English (en)
Other versions
CN105530453A (zh
Inventor
刘翔
张宝卿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Keda Technology Co Ltd
Original Assignee
Suzhou Keda Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Keda Technology Co Ltd filed Critical Suzhou Keda Technology Co Ltd
Priority to CN201511017695.5A priority Critical patent/CN105530453B/zh
Publication of CN105530453A publication Critical patent/CN105530453A/zh
Application granted granted Critical
Publication of CN105530453B publication Critical patent/CN105530453B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440227Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • H04N7/147Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供了一种用于WebRTC的视频数据发送方法及装置、接收方法及装置,其中用于WebRTC的视频数据发送方法包括:获取未编码视频数据;向H.264编码器中输入未编码视频数据进行编码;获取经H.264编码器编码后的已编码视频数据;按照H.264格式的切包方式对已编码视频数据进行打包以形成已编码视频数据包;发送已编码视频数据包。本发明通过在WebRTC中增加了H.264标准的编解码算法和基于H.264标准特有的切包和组帧方式,使得WebRTC可以与现在主流的H.264标准的视频会议产品相兼容。从而,使得WebRTC在基于web的无插件视频会议领域更好地发挥自己的优势。

Description

用于WebRTC的视频数据发送方法及装置、接收方法及装置
技术领域
本发明涉及视频会议技术领域,具体涉及一种用于WebRTC的视频数据发送方法及装置、接收方法及装置。
背景技术
WebRTC是源自网页实时通信(Web Real-Time Communication)的缩写,是google公司的一个支持网页浏览器进行免插件实时音视频对话的技术,其在视频会议领域的应用前景非常广阔。
WebRTC的最终目的是让Web开发者能够基于浏览器开发出丰富的多媒体实时交互应用,而无需下载安装任何插件。它提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且支持跨平台(windows\linux\mac\andriod)应用。这意味着,Web开发者只需要通过简单的javascript语句就可以实现复杂的视频会议核心技术调用,大大降低了多媒体交互应用的开发难度。
图1示出了整个webRTC的框架结构:webRTC本是一项在浏览器内部进行实时视频和音频通信的技术,所以其暴露在最外层的接口是Web API,再往下才是WebRTC C++API(也可称为WebRTC Native C++API),Native API完成其在不同平台(Windows、Linux、Mac、Android)上各个模块的功能实现,其包括音视频的采集、编解码、网络传输、显示、渲染等功能,实际上google设定这一层是给浏览器开发者使用的接口,不过其他想要使用WebRTC各个模块的开发者也可以通过Native API来调到WebRTC中各个表现优秀的功能。
为了使开发者更方便的使用视频通信的功能,WebRTC中实现了一套可直接使用的视频流控制模块VideoEngine,如图2所示为VideoEngine内部中各个模块的关联情况,包括编解码模块(VideoCoding Module)、RtpRtcp模块、网络收发模块之间的关系,及VideoEngine是如何来组织这些模块的。
VideoEngine包含着一次视频通信过程中所要调用到的各个模块的操作对象,视频流的控制都在VideoEngine内部实现,对于开发者不需要关心采集模块与视频编码模块如何链接,视频编码模块与网络收发模块如何链接,开发者只需要启动这个过程即可,如图3中所示,其中包括:
1)从编码开始到发送数据整个过程中,视频流在VideoEngine内部的流向;
2)从接收RTP包开始到解码整个过程中,视频流在VideoEngine内部的流向。
但是,目前视频会议领域使用最普遍的编解码算法还是基于H.264标准的算法,其切包和组帧方式也是基于H.264标准特有的,未来的发展趋势可以确定是H.265。以视频会议目前的普及率,不考虑兼容性的视频会议产品是无法在市场上生存的。而WebRTC原生并不支持H.264/H.265,它的默认编解码器使用的是开源的VP8。这使得WebRTC无论从编解码算法还是媒体流的接收发送特性上,均无法与现在主流的H.264视频会议产品相兼容。
发明内容
因此,本发明要解决的技术问题在于WebRTC由于使用的编解码器是开源的VP8,而非目前主流视频会议产品使用的H.264编解码器,而导致的WebRTC无论从编解码算法还是媒体流的接收发送上,均无法与现在主流的视频会议产品相兼容。
为此,本发明实施例提供了如下技术方案:
一种用于WebRTC的视频数据发送方法,包括以下步骤:
获取未编码视频数据;
向H.264编码器中输入未编码视频数据进行编码;
获取经H.264编码器编码后的已编码视频数据;
按照H.264格式的切包方式对已编码视频数据进行打包以形成已编码视频数据包;
发送已编码视频数据包。
优选地,H.264编码器是通过外部编解码器注册模块来动态注册的,外部编解码器注册模块由WebRTC中的视频引擎提供。
优选地,获取经H.264编码器编码后的已编码视频数据的步骤之后,还包括:
利用H.264编码器内预先设置的编码完成时的回调函数将已编码视频数据发送至WebRTC中的RtpRtcp模块,以进行打包和发送。
优选地,按照H.264格式的切包方式对已编码视频数据进行打包的步骤包括:
将已编码视频数据打包为多个片(slice);
判断各个片(slice)的大小是否大于预设的最大传输单元;
如果是,则通过切片方式将该片(slice)切成多个包。
一种用于WebRTC的视频数据接收方法,包括以下步骤:
接收已编码视频数据包;
按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧;
向H.264解码器输入组帧后的已编码视频数据进行解码。
优选地,H.264解码器是通过外部编解码器注册模块来动态注册的,外部编解码器注册模块由WebRTC中的视频引擎提供。
优选地,按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧的步骤包括:
获取并解析所接收的已编码视频数据包的包头信息;
根据包头信息进行组帧。
优选地,向H.264解码器输入组帧后的已编码视频数据进行解码的步骤之后,还包括:
根据H.264解码器中预先设置的解码完成时的回调函数将解码完成的视频数据输送至显示模块中进行显示。
一种用于WebRTC的视频数据发送装置,包括:
第一获取单元,用于获取未编码视频数据;
编码单元,用于向H.264编码器中输入未编码视频数据进行编码;
第二获取单元,用于获取经H.264编码器编码后的已编码视频数据;
打包单元,用于按照H.264格式的切包方式对已编码视频数据进行打包以形成已编码视频数据包;
发送单元,用于发送已编码视频数据包。
一种用于WebRTC的视频数据接收装置,包括:
接收单元,用于接收已编码视频数据包;
组帧单元,用于按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧;
解码单元,用于向H.264解码器输入组帧后的已编码视频数据进行解码。
本发明技术方案,具有如下优点:
1.本发明实施例提供的用于WebRTC的视频数据发送方法及装置,通过在webRTC中增加了对H.264格式的支持,即增加了H.264标准的编码算法和基于H.264标准特有的切包方式,从而使得WebRTC从编码算法和媒体流的发送特性上,与现在主流的H.264视频会议产品相兼容。结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加广泛。
2.本发明实施例提供的用于WebRTC的视频数据发送方法及装置,H.264编码器是通过外部编解码器注册模块(ViEExternalCodec)来动态注册的,在运用过程中可以根据使用需要动态的切换编码器。
3.本发明实施例提供的用于WebRTC的视频数据接收方法及装置,通过在webRTC中增加了对H.264格式的支持,即增加了H.264标准的解码算法和基于H.264标准特有的组帧方式,从而使得WebRTC从解码算法和媒体流的接收特性上,与现在主流的H.264视频会议产品相兼容。结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加实际。
4.本发明实施例提供的用于WebRTC的视频数据接收方法及装置,H.264解码器是通过外部编解码器注册模块(ViEExternalCodec)来动态注册的,这种加入新的解码器的方法,使得解码器的变更会更加灵活。在实际运用过程中可以根据使用需要动态的切换解码器。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为WebRTC的架构图;
图2为VideoEngine(视频引擎)内部结构示意图;
图3为视频流在VideoEngine(视频引擎)内部流向示意图;
图4为本发明实施例1中用于WebRTC的视频数据发送方法的流程图;
图5为本发明实施例中1和2中视频流的流向示意图;
图6为本发明实施例2中用于WebRTC的视频数据发送方法的流程图;
图7为本发明实施例4中用于WebRTC的视频数据发送装置的原理框图;
图8为本发明实施例5中用于WebRTC的视频数据接收装置的原理框图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
如图4和5所示,本实施例提供了一种用于WebRTC的视频数据发送方法,本实施例中所用到的函数都是WebRTC中的函数,包括以下步骤:
S11:获取未编码视频数据,本实施例中该未编码视频数据主要为YUV(I420)数据。
S12:向H.264编码器中输入未编码视频数据进行编码。具体是利用函数Encode(...)向H.264编码器里面送进采集获得的YUV(I420)数据以进行编码。H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。H.264编码器即用于将采集获取的裸数据进行压缩以便于传输。
S13:获取经H.264编码器编码后的已编码视频数据。
S14:按照H.264格式的切包方式对已编码视频数据进行打包以形成已编码视频数据包,即RTP包。
S15:发送已编码视频数据包。
上述用于WebRTC的视频数据发送方法,通过向WebRTC中加入H.264编码器和在WebRTC中的RtpRtcp模块的发送点加入H.264格式的切包方式,如图5所示,在WebRTC中增加了对H.264标准的支持。主要涉及到webRTC中的VideoCoding与RtpRtcp模块,这两个模块是通过VideoEngine来管理,从而实现简易调用接口的封装。
本实施例提供的用于WebRTC的视频数据发送方法,通过在webRTC中增加了对H.264格式的支持,即增加了H.264标准的编码算法和基于H.264标准特有的切包方式,从而使得WebRTC从编码算法和媒体流的发送特性上,与现在主流的H.264视频会议产品相兼容。结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加广泛。
作为本实施例的优选实施方式,H.264编码器是通过外部编解码器注册模块(ViEExternalCodec)来动态注册的,外部编解码器注册模块由WebRTC中的视频流控制模块,即视频引擎(VideoEngine)提供。这种向WebRTC中加入新的编码器的方式,使得编码器的变更会更加灵活,例如可以将H.264编码算法封装成一个编码器,同时也可以把开发者自己的编码库封装成一个编码器,在运用过程中可以动态的切换要使用的编码器。
具体地,向WebRTC中加入H.264编码器的过程如下:
首先,编写H.264编码器;
然后,直接调用外部编解码器注册模块(ViEExternalCodec)的函数RegisterExternalSendCodec(...)来注册该H.264编码器。函数RegisterExternalSendCodec(...)的参数中有一个video_channel的整型值,这个值直接关联到当前要注册的是哪一路码流,即这个channel值是各路码流的唯一标识。
另外,在WebRTC内部还需要参考VP8加入相应的一些处理才算是完成加入H.264编码的支持。例如,采集的视频裸数据(YUV格式)如何送给编码缓冲、编码后的数据如何传递给网络发送模块、解码后的缓存数据如何送给显示模块等这些缓冲管理及传递的机制都需要参考VP8中的来实现。
作为本实施例的可替换实施方式,也可以将H.264编码器直接加入到WebRTC的内部。
在步骤S12之前,还需要利用初始化函数InitEncode(...)来初始化H.264编码器,以完成相应的参数填写。
作为具体的实施方式,上述步骤S13,即获取经H.264编码器编码后的已编码视频数据的步骤之后,还包括:
利用H.264编码器内预先设置的编码完成时的回调函数将已编码视频数据发送至WebRTC中的RtpRtcp模块,以进行打包和发送。即,每一帧未编码视频数据(裸数据)被编码成已编码视频数据后就会通过回调函数被发送至网络模块(包括RtpRtcp模块)。
具体是利用函数RegisterEncodeCompleteCallback(...)向H.264编码器中设置编码完成时的回调的。
在整个编码任务完成后,还利用函数Release(...)释放编码器,主要是释放占用的一些资源。
RTP打包H.264的方式有多种,本实施例中优选采用以单个NAL(网络抽象层,格式化编码后的数据,保证其在各种网络介质上传输)为单元发送,相对于H.264而言也就是以一个slice为单元发送。具体地,上述步骤S14,即按照H.264格式的切包方式对已编码视频数据进行打包的步骤包括:
首先,将已编码视频数据打包为多个片(slice)。对于已经编码的视频数据,其中一帧可以切分成多片(slice),slice由宏块(MB)组成,宏块是视频编码的最小单元。
然后,判断各个片(slice)的大小是否大于预设的最大传输单元(MTU),该最大传输单元通常定义为1500,但也可以根据不同的网络进行一些调整。
如果是,则通过切片方式将该片(slice)切成多个包;如果slice(片)的大小不大于预设的最大传输单元那么就不用切片了,直接加RTP包发送。H.264的切片方式具体为FU-A切片方式,FU-A来自于RFC3984标准,规定了视频数据的切片格式,FU即FragmentationUnit。
基于可以通过Native API方便的调用WebRTC中各个功能模块,且其中某些功能(类似于音频预处理、网络传输等功能)都有着优异的表现,所以可以将这些功能封装成通用的、模块化的组件,以便其他项目方便的使用,如下例举了些WebRTC中可封装成组件的模块:
1)medianet(网络传输):rtp_rtcp&udp_transport;
2)mediaSDK(媒体控制):video_engine&voice_engine;
3)音频预处理(AEC...):audio_processing;
4)视频预处理(Denoise...):video_processing。
实施例2
如图5和6所示,本实施例提供了一种用于WebRTC的视频数据接收方法,本实施例中所用到的函数都是WebRTC自带的函数,包括以下步骤:
S21:接收已编码视频数据包,即RTP包。
S22:按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧;
S23:向H.264解码器输入组帧后的已编码视频数据进行解码。具体是利用函数Decode(...)向H.264解码器里面送进接收到的已编码视频数据包以进行解码。
上述用于WebRTC的视频数据接收方法,如图5所示,通过向WebRTC中加入H.264解码器和在WebRTC中的RtpRtcp模块的接收点加入H.264格式的组帧方式,在WebRTC中增加了对H.264标准的支持。主要涉及到webRTC中的VideoCoding与RtpRtcp模块。
本实施例提供的用于WebRTC的视频数据接收方法,通过在webRTC中增加了对H.264格式的支持,即增加了H.264标准的解码算法和基于H.264标准特有的组帧方式,从而使得WebRTC从解码算法和媒体流的接收特性上,与现在主流的H.264视频会议产品相兼容。结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加实际。
作为本实施例的具体实施方式,上述步骤S22,即按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧的步骤包括:
首先,获取并解析所接收的已编码视频数据包的包头信息。
然后,根据包头信息进行组帧。
具体地,如图5所示,本实施例在WebRTC中的RtpRtcp模块的接收点中加入了针对H.264格式的组帧方式。但是,此处的组帧不是真正的实现将多个包组成一帧,只是通过相应的包头信息来解析出WebRTC中的有效信息并构造成RTPPayload结构对象,该结构对象中会包含是否是帧的第一个包等信息,这些信息会传递到WebRTC的视频编解码模块(video_coding)中,在视频编解码模块中再完成真正的组帧操作。
作为本实施例的优选实施方式,H.264解码器是通过外部编解码器注册模块(ViEExternalCodec)来动态注册的,外部编解码器注册模块由WebRTC中的视频引擎(VideoEngine)提供。与实施例1中向WebRTC中加入H.264编码器一样,这种加入新的解码器的方法,使得解码器的变更会更加灵活。
具体地,向WebRTC中加入H.264解码器的过程如下:
首先,编写H.264解码器;
然后,直接调用外部编解码器注册模块(ViEExternalCodec)的函数RegisterExternalReceiveCodec(...)来注册该H.264解码器。函数RegisterExternalReceiveCodec(...)的参数中有一个video_channel的整型值,这个值直接关联到当前要注册的是哪一路码流,即这个channel值的是每一路码流的唯一标识。
另外,在WebRTC内部还需要参考VP8加入相应的一些处理才算是完成加入对H264解码的支持。
作为本实施例的可替换实施方式,也可以将H.264解码器直接加入到WebRTC的内部。
具体地,在上述步骤S23之前,还需要利用初始化函数InitDecode(...)来初始化H.264解码器,以完成相应参数的填写。
在整个解码任务完成时,还利用函数Release(...)释放解码器,主要是释放相应的一些资源。
作为具体的实施方式,上述步骤S23,即向H.264解码器输入组帧后的已编码视频数据进行解码的步骤之后,还包括:
根据H.264解码器中预先设置的解码完成时的回调函数将解码完成的视频数据输送至显示模块中进行渲染以显示。
具体是利用函数RegisterDecodeCompleteCallback(...)向H.264解码器中设置解码完成时的回调。
实施例3
本实施例提供了一种视频数据发送方法和视频数据接收方法,用于WebRTC,包括实施例1所述的用于WebRTC的视频数据发送方法和实施例2所述的用于WebRTC的视频数据接收方法。
上述用于WebRTC的视频数据发送方法和视频数据接收方法,通过向WebRTC中加入H.264编解码器、在其RtpRtcp模块的发送点加入H.264标准的切包方式和接收点加入H.264标准的组帧方式,在WebRTC中增加了对H.264标准的支持。从而使得WebRTC从编解码算法和媒体流的接收发送上,与现在主流的H.264视频会议产品相兼容。再结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加广泛。
将上述用于WebRTC视频数据发送方法和视频数据接收方法应用到Android手机中,可以与标准h.323视频会议终端建立呼叫,通过ip网络收发H.264格式的视频码流,手机侧可以成功解码并显示视频会议终端摄像头采集编码发送过来的视频数据,而视频会议终端侧也可以成功解码显示手机摄像头采集发送过来的视频数据。至此,基于webRTC的简单视频会议终端媒体网络层基本实现。另外,该方法也可以应用到ipad和计算机等其他载体中,以形成基于浏览器、无需下载安装任何插件且可以与主流视频会议产品相兼容的视频会议产品。
实施例4
如图7所示,本实施例提供了一种用于WebRTC的视频数据发送装置,包括:
第一获取单元U11,用于获取未编码视频数据;
编码单元U12,用于向H.264编码器中输入未编码视频数据进行编码;
第二获取单元U13,用于获取经H.264编码器编码后的已编码视频数据;
打包单元U14,用于按照H.264格式的切包方式对已编码视频数据进行打包以形成已编码视频数据包;
发送单元U15,用于发送已编码视频数据包。
本实施例提供的用于WebRTC的视频数据发送装置,通过在webRTC中增加了对H.264格式的支持,即增加了H.264标准的编码算法和基于H.264标准特有的切包方式,从而使得WebRTC从编码算法和媒体流的发送特性上,与现在主流的H.264视频会议产品相兼容。结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加广泛。
作为本实施例的优选实施方式,H.264编码器是通过外部编解码器注册模块(ViEExternalCodec)来动态注册的,外部编解码器注册模块由WebRTC中的视频流控制模块,即视频引擎(VideoEngine)提供。这种向WebRTC中加入新的编码器的方式,使得编码器的变更会更加灵活,例如可以将H.264编码算法封装成一个编码器,同时也可以把开发者自己的编码库封装成一个编码器,在运用过程中可以动态的切换要使用的编码器。
本实施例提供的上述装置,还包括:
第一回调单元,用于利用H.264编码器内预先设置的编码完成时的回调函数将已编码视频数据发送至WebRTC中的RtpRtcp模块,以进行打包和发送。
作为具体的实施方式,打包单元U14包括:
切包子单元,用于将已编码视频数据打包为多个slice;
判断子单元,用于判断各个slice的大小是否大于预设的最大传输单元;
切片子单元,如果slice的大小大于预设的最大传输单元,则用于通过切片方式将该slice切成多个包。
实施例5
如图8所示,本实施例提供了一种用于WebRTC的视频数据接收装置,包括:
接收单元U21,用于接收已编码视频数据包;
组帧单元U22,用于按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧;
解码单元U23,用于向H.264解码器输入组帧后的已编码视频数据进行解码。
本实施例提供的用于WebRTC的视频数据接收装置,通过在webRTC中增加了对H.264格式的支持,即增加了H.264标准的解码算法和基于H.264标准特有的组帧方式,从而使得WebRTC从解码算法和媒体流的接收特性上,与现在主流的H.264视频会议产品相兼容。结合WebRTC自身良好的网络适应性,可以使其在视频会议领域的应用更加广泛。
作为具体的实施方式,上述组帧单元U22包括:
解析子单元,用于获取并解析所接收的已编码视频数据包的包头信息;
组帧子单元,用于根据包头信息进行组帧。
本实施例提供的上述装置,还包括:
第二回调单元,用于根据H.264解码器中预先设置的解码完成时的回调函数将解码完成的视频数据输送至显示模块中进行显示。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (4)

1.一种用于WebRTC的视频数据接收方法,其特征在于,包括以下步骤:
接收已编码视频数据包;
按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧;
向H.264解码器输入组帧后的已编码视频数据进行解码;
其中,所述按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧的步骤包括:
获取并解析所接收的已编码视频数据包的包头信息;
根据所述包头信息进行组帧;所述组帧包括:通过相应的包头信息来解析出WebRTC中的有效信息并构造成RTPPayload结构对象,所述结构对象中包含是否是帧的第一个包的信息,将所述信息传递到WebRTC的视频编解码模块中,在所述视频编解码模块中完成组帧操作。
2.如权利要求1所述的方法,其特征在于,所述H.264解码器是通过外部编解码器注册模块来动态注册的,所述外部编解码器注册模块由WebRTC中的视频引擎提供。
3.如权利要求1或2所述的方法,其特征在于,所述向H.264解码器输入组帧后的已编码视频数据进行解码的步骤之后,还包括:
根据所述H.264解码器中预先设置的解码完成时的回调函数将解码完成的视频数据输送至显示模块中进行显示。
4.一种用于WebRTC的视频数据接收装置,其特征在于,包括:
接收单元,用于接收已编码视频数据包;
组帧单元,用于按照H.264格式的组帧方式对所接收的已编码视频数据包进行解析、组帧;
解码单元,用于向H.264解码器输入组帧后的已编码视频数据进行解码;
其中,所述组帧单元包括:
解析子单元,用于获取并解析所接收的已编码视频数据包的包头信息;
组帧子单元,用于根据包头信息进行组帧;所述组帧包括:通过相应的包头信息来解析出WebRTC中的有效信息并构造成RTPPayload结构对象,所述结构对象中包含是否是帧的第一个包的信息,将所述信息传递到WebRTC的视频编解码模块中,在所述视频编解码模块中完成组帧操作。
CN201511017695.5A 2015-12-29 2015-12-29 用于WebRTC的视频数据发送方法及装置、接收方法及装置 Active CN105530453B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511017695.5A CN105530453B (zh) 2015-12-29 2015-12-29 用于WebRTC的视频数据发送方法及装置、接收方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511017695.5A CN105530453B (zh) 2015-12-29 2015-12-29 用于WebRTC的视频数据发送方法及装置、接收方法及装置

Publications (2)

Publication Number Publication Date
CN105530453A CN105530453A (zh) 2016-04-27
CN105530453B true CN105530453B (zh) 2019-06-28

Family

ID=55772397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511017695.5A Active CN105530453B (zh) 2015-12-29 2015-12-29 用于WebRTC的视频数据发送方法及装置、接收方法及装置

Country Status (1)

Country Link
CN (1) CN105530453B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107040458B (zh) * 2017-03-23 2020-10-16 中国南方电网有限责任公司 一种实现视频会议互通的方法和系统
CN108156414B (zh) * 2017-12-27 2020-10-02 惠州Tcl家电集团有限公司 WebRTC数据编码方法、设备及计算机可读存储介质
CN108173863B (zh) * 2017-12-29 2021-08-17 深圳市泛海三江科技发展有限公司 建立适用于物联网设备的轻量级WebRTC系统的方法和系统
CN108769616A (zh) * 2018-06-21 2018-11-06 泰华智慧产业集团股份有限公司 一种基于rtsp协议的实时视频无插件预览方法及系统
CN113727113B (zh) * 2020-05-26 2024-06-21 网易(杭州)网络有限公司 视频解码方法、推流方法及系统
CN112533075A (zh) * 2020-11-24 2021-03-19 湖南傲英创视信息科技有限公司 视频处理方法、装置及系统
CN112491924B (zh) * 2020-12-09 2022-03-22 威创集团股份有限公司 跨平台人脸识别登录方法、系统及存储介质
CN112738644B (zh) * 2021-04-01 2021-07-09 浙江华创视讯科技有限公司 一种基于WebRTC的视频流传输方法和装置
CN113206888B (zh) * 2021-05-10 2022-12-13 创新奇智(上海)科技有限公司 基于rtsp的实时视频流传输方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102868939A (zh) * 2012-09-10 2013-01-09 杭州电子科技大学 一种实时视频监控系统中音视频数据的同步方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414835A (zh) * 2013-07-24 2013-11-27 佳都新太科技股份有限公司 一种使用WebRTC技术实现呼叫中心视频坐席的方法
CN105099897B (zh) * 2014-05-13 2020-01-21 中兴通讯股份有限公司 一种在浏览器和电信网络之间进行通信的方法和网关

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102868939A (zh) * 2012-09-10 2013-01-09 杭州电子科技大学 一种实时视频监控系统中音视频数据的同步方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
WebRTC VideoEngine超详细教程(一)-视频通话的基本流程;zhanghui_cuc;《CSDN博客》;20150917;第3页最后一段-第5页
WebRTC VideoEngine超详细教程(二)--集成OPENH264编解码器;zhanghui_cuc;《CSDN博客》;20150917;第1-3、13、15、22、26页
WebRTC代码走读(十一):video_coding模块分析;王振中;《CSDN博客》;20150620;第1-3段

Also Published As

Publication number Publication date
CN105530453A (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
CN105530453B (zh) 用于WebRTC的视频数据发送方法及装置、接收方法及装置
TWI528733B (zh) 用於提供及使用供轉碼媒體串流用之交互操作性點的預定發訊的系統及方法
US8127040B2 (en) Signaling buffer parameters indicative of receiver buffer architecture
TWI311422B (en) Enhanced video streaming using dual network mode
CN103843301B (zh) 经译码多媒体数据的网络串流期间的表示之间的切换
KR20190085899A (ko) 미디어 데이터를 송수신하기 위한 인터페이스 장치 및 방법
US20160337424A1 (en) Transferring media data using a websocket subprotocol
CN107018446B (zh) 一种网络视频点播以及直播的推流方法
KR101065649B1 (ko) 리던던시 관리를 제공하기 위한 시스템 및 방법
US20180176278A1 (en) Detecting and signaling new initialization segments during manifest-file-free media streaming
JP6285027B2 (ja) ビデオ電話におけるビデオ中断インジケーション
WO2007045140A1 (fr) Methode en temps reel pour transferer des donnees multimedia
CN104270594B (zh) 数据包发送与接收的方法及设备
CN107087138A (zh) 一种基于h.265视频编码格式的视频会议系统
CN111327580A (zh) 一种报文传输方法及装置
CN107079132B (zh) 在视频电话中的端口重配置之后馈送经帧内译码的视频帧
US20220407899A1 (en) Real-time augmented reality communication session
WO2014047938A1 (zh) 数字视频码流的解码方法拼接方法和装置
KR100704116B1 (ko) 멀티미디어 서비스를 위한 다중 실시간 인코딩 방법 및 그서버 장치
US20240340322A1 (en) Signaling usage of pdu set and end of burst marking for communicating webrtc media data
Basso Beyond 3G video mobile video telephony: The role of 3G-324M in mobile video services
WO2022266457A1 (en) Real-time augmented reality communication session
TW202423095A (zh) 回應於網路中斷的視訊內容的自動產生
WO2024075100A1 (en) Techniques for pdu set-aware applications and associated signaling
CN104935862A (zh) 一种3g-324m-h.324m视频协议的跨平台多线程的实现及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant