标题 | WebRTC下流媒体文件远程推送与即时播放研究 |
范文 | 张宝明++钮丹倩 摘要:WebRTC是推动互联网经济向前发展的重要技术,但存在应用模式不成熟,应用范围有限,与电子商务缺乏深度融合等问题。探讨了WebRTC的应用模式及其实现技术。分析了现行流媒体文件远程推送与即时播放方法的不足;通过增加排队系统和协调机制,设计了基于事件响应的处理模型,丰富了电子商务视频应用解决方案。 关键词:流媒体;远程推送;即时播放;电子商务 DOIDOI:10.11907/rjdk.171649 中图分类号:TP393 文献标识码:A文章编号:16727800(2017)010018203 0引言 WebRTC(Web RealTime Communication,网页实时通信)是第4代Web应用技术[1],自2012年出现以来一直受到追捧。其核心要义在于集成音视和视频,绕过服务器,通过信令直接在浏览器和浏览器之间(peertopeer)建立信道,实现浏览器与浏览器之间的实时通信,以拓展Web应用,推动互联网经济向前发展[23]。 随着WebRTC技术不断成熟、功能逐渐完善,建立在其技术基础之上的视频会议、可视通信等应用也得以推广,在電子商务、网络社区中屡屡可见其身影。然而,受到技术条件的限制和监管政策的约束,与Web应用第2代技术Ajax和第3代技术WebSocket出现后,集中爆发的新模式如微博、维基、社交网络等应用相比,基于WebRTC技术的应用目前还仅局限于视频会议和可视通信,与电子商务和电子政务的深度融合尚未开始,应用范围较为有限,应用模式还不够清晰,缺少必要的创新。因此,探讨WebRTC技术下新的应用模式显得尤为重要。 本文探讨了WebRTC技术新的应用模式:流媒体文件的远程推送与即时播放,目的是在实时通信过程中,利用WebRTC技术向其它远程端浏览器(远程Peer)推送流媒体文件,并及时播放(一边推送一边播放,而不是等推送完再播放)。这样不但能减少远程客户端等待时间,改善用户体验,还能由此产生新的商业模式,实现诸如电子商务中的广告插播、音乐商店中的体验播放、教育网站上的明师名家视频教学等应用。 1WebRTC技术现状 对于WebRTC技术相关文献有一些探讨。如在W3C组织推荐的《W3C Working Draft for Audio API 1.0》[4]草案中,就提出了MediaStream概念,将本地播放的视频、音频流(即网页中用于播放视频和音频文件的 其次,在onMessage、onUpdate和onLoad事件处理模块间加入了时序协调机制。为此,增加两个全局变量:isFirstChunkUpdating、receiveError,分別表示“queue中第1个数据块正在进行appendBuffer操作”、“appendBuffer操作过程中发生了错误”。 在接收数据之前,分别将初始值设置为: isFirstChunkUpdating =false和receiveError =false,然后通过以下流程进行协调: 等待数据通道传来数据,以触发onmessage事件。 onmessage事件的处理。过程代码如下: (1)判断传来的数据是视频数据块或是结束标记。若是视频数据块,则转入(2);若是结束标记,则转入(3); (2)是视频数据块,则: if(receiveError){ 清空queue队列,丢弃所有已排队的数据块; }else{ 将数据块转换成Uint8Array格式; 进入queue队列,排队等待; if(!isFirstChunkUpdating &&queue.length==1){ 设置isFirstChunkUpdating =true; try{ appendBuffer(queue中第1个数据块),完成后自动触发onUpdate事件; }catch(e){ //若捕捉到错误,则说明传送的不是视频文件 设置receiveError=true; }}} (3)是结束标记,则: if(!receiveError){ if(queue.length>0 || appendBuffer操作正在进行中) endflag=true; else mediaSource.endOfStream(); } 3)onUpdate事件的处理: if(queue.length>0){ appendBuffer(queue中第1个数据块),完成后自动触发onUpdate事件; }else{ isFirstChunkUpdating =true; if(endflag){ mediaSource.endOfStream(); }; } 经过改进后圆满实现了流媒体文件的远程推送与即时播放功能,效果如图3所示。 图3远程Peer端接收推送与即时播放效果 3结语 通过WebRTC技术实现流媒体文件的远程推送与即时播放,首先需要在远程端生成一个mediaSource对象,并成为播放部件 参考文献参考文献: [1]W3C. HTML5[EB/OL]. [20161213]. http://www.w3.org/TR/html5/. [2]SALVATORE LORETO, SIMON PIETRO ROMANO. Realtime communication with WebRTC: peertopeer in the browser[M]. OReilly Media,2014. [3]张向辉,黄佳庆,吴康恒,等.基于WebRTC的实时视音频通信研究综述[J].计算机科学,2015,42(2):16. [4]CHRIS ROGERS. Audio API 1.0[EB/OL].[20161211]. https://www.w3.org/2011/audio/drafts/1WD/. [5]MOZILLA DEVELOPMENT NETWORK. Web technology for developers[EB/OL].[20161225].https://developer.mozilla.org/enUS/docs/Web/API/AudioContext. [6]MUAZ KHAN. Prerecorded media streaming[EB/OL].[2016108].https://www.webrtcexperiment.com/streamer.js. 责任编辑(责任编辑:杜能钢) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。