大佬教程收集整理的这篇文章主要介绍了Kurento实战之四:应用开发指南,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
按照不同的职责划分,整个代码被拆分为三部分:
最简单的逻辑应该是通用的WebSocket处理了,咱们先看这部分,复杂的稍后再说,Handler类中和WebSockert相关的逻辑如下:
messagEID | 处理方法 | 说明 |
---|---|---|
PROCESS_SDP_OFFER | handleProcessSdpOffer | 收到前端SDPOffer数据后的处理逻辑 |
ADD_ICE_CANDIDATE | handleAdDiceCandidate | 收到前端ICE数据后的处理逻辑 |
STOP | handleStop | HashMap删除用户数据,再远程调用MediaPipeline.release |
ERROR | handleError | HashMap删除用户数据,再远程调用MediaPipeline.release |
7. 还有一个发送消息到浏览器侧的sendmessage方法,以及发送错误信息的sendError方法;
// 创建pipeline
final MediaPipeline pipeline = kurento.createMediaPipeline();
user.setMediaPipeline(pipelinE);
// 创建webRtcEndpoint
final WebRtcEndpoint webRtcEp =
new WebRtcEndpoint.builder(pipelinE).build();
user.setWebRtcEndpoint(webRtcEp);
// 自己的sink连接上自己的src
webRtcEp.connect(webRtcEp);
// ---- Endpoint configuration
String sdpOffer = jsonmessage.get("sdpOffer").getAsString();
// 注册各类监听,例如媒体资源状态变化、ICE变化等
// 通过websocket回复SDP Offer
initWebRtcEndpoint(session, webRtcEp, sdpOffer);
log.info("[Handler::handleStart] New WebRtcEndpoint: {}",
webRtcEp.getName());
// ---- Endpoint startup
// 取得ICE信息
startWebRtcEndpoint(webRtcEp);
private void stop(final WebSocketSession session) {
// Remove the user session and release all resources
final UserSession user = users.remove(session.getId());
if (user != null) {
MediaPipeline mediaPipeline = user.getMediaPipeline();
if (mediaPipeline != null) {
log.info("[Handler::stop] Release the Media Pipeline");
mediaPipeline.release();
}
}
}
以上就是整个kurento-Hello-world的源码分析,整个工程的代码在拆分后再分析时,变得异常清晰和简单:
以上是大佬教程为你收集整理的Kurento实战之四:应用开发指南全部内容,希望文章能够帮你解决Kurento实战之四:应用开发指南所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。