音视频数据采集->编码->发送->接收->解码->播放。
编码、解码、以及会用到加密、解密、回声消除等针对不同系统处理方式都一样,与平台无关,
但像Socket通信涉及到的数据发送、接收不同平台则有不同的处理方式,
如Socket模型,windows里面用的是WSASocket,Linux下用的则是socket,所以他通过模版模式来创建不同类型,
udp_socket2_windows.h主要负责windows平台上的Socket相关操作,与之对应的就是linux平台上的udp_socket_posix.h
udp_transport.h主要负责包的发送和接收,如果你想实现自己的数据包收发逻辑,可重写该类,如他里面的LoopBack方式就是通过重写该模块来实现的。
对客户端调用来说主要就是做四件事情:
1、设置音视频远端地址和端口(包括远端音视频的RTP、RTCP端口和本地接收音视频的RTP、RTCP端口)。
2、启动音视频数据的发送。
3、启动音视频数据的接收。
4、启动音视频数据的播放。
具体代码结构如下:
以上就是WebRTC通讯过程中主要涉及的操作,希望对您所帮助,如有不对之处敬请指教,谢谢! 请思考:WebRTC里面如何操作音视频设备?如打开扬声器,启动摄像头,后面会揭晓答案,请关注。
编码、解码、以及会用到加密、解密、回声消除等针对不同系统处理方式都一样,与平台无关,
但像Socket通信涉及到的数据发送、接收不同平台则有不同的处理方式,
如Socket模型,windows里面用的是WSASocket,Linux下用的则是socket,所以他通过模版模式来创建不同类型,
udp_socket2_windows.h主要负责windows平台上的Socket相关操作,与之对应的就是linux平台上的udp_socket_posix.h
udp_transport.h主要负责包的发送和接收,如果你想实现自己的数据包收发逻辑,可重写该类,如他里面的LoopBack方式就是通过重写该模块来实现的。
对客户端调用来说主要就是做四件事情:
1、设置音视频远端地址和端口(包括远端音视频的RTP、RTCP端口和本地接收音视频的RTP、RTCP端口)。
2、启动音视频数据的发送。
3、启动音视频数据的接收。
4、启动音视频数据的播放。
具体代码结构如下:
public void start() { this.setRemoteIp(WebRTCClient.str_remote_ip);WebRTCClient.str_to); if (audioEnabled) { startVoE(); } if (receiveVideo || sendVideo) { startViE(); } } public void startVoE() { check(!voeRunning, "VoE already started"); check(voe.startListen(audioChannel) == 0, "Failed StartListen"); check(voe.startPlayout(audioChannel) == 0, "VoE start playout failed"); check(voe.startSend(audioChannel) == 0, "VoE start send failed"); voeRunning = true; } public void startViE() { check(!vieRunning, "ViE already started"); if (receiveVideo) { if (viewSelection == context.getResources().getInteger(R.integer.openGl)) { svRemote = ViERenderer.CreateRenderer(context, true); } else if (viewSelection == context.getResources().getInteger(R.integer.surfaceView)) { svRemote = ViERenderer.CreateRenderer(context, false); } else { externalCodec = new MediaCodecVideoDecoder(context); svRemote = externalCodec.getView(); } if (externalCodec != null) { check(vie.registerExternalReceiveCodec(videoChannel, VCM_VP8_PAYLOAD_TYPE, externalCodec, true) == 0, "Failed to register external decoder"); } else { check(vie.addRenderer(videoChannel, svRemote, 0, 0, 0, 1, 1) == 0, "Failed AddRenderer"); check(vie.startRender(videoChannel) == 0, "Failed StartRender"); } check(vie.startReceive(videoChannel) == 0, "Failed StartReceive"); } if (sendVideo) { startCamera(); check(vie.startSend(videoChannel) == 0, "Failed StartSend"); } vieRunning = true; }
以上就是WebRTC通讯过程中主要涉及的操作,希望对您所帮助,如有不对之处敬请指教,谢谢! 请思考:WebRTC里面如何操作音视频设备?如打开扬声器,启动摄像头,后面会揭晓答案,请关注。
收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2302
- 用户1336
- 访客11053564
每日一句
Youth means limitless possibilities.
年轻就有无限的可能。
年轻就有无限的可能。
新会员