websocket播放rtsp方案之websocket简介
1回顾原本本专栏到前面写的4篇文章已经结束了,结果公司前端哥们儿搞了一个笑话,我们项目在IE中打不开;注意是打不开,不是兼容性不好;最后经过前端专家以及架构师领导们一致商量,既然前端不能实现,我们还有后端人员呀!?让后端人员转码嘛!问题不就解决啦?反正我们只要出结果就可以了。哎,还有什么好说的,只能撸码呀!前面几篇文章主要讲了vlc、浏览器中集成vlc、Javacv抓图以及Javacv录制视频等相
1 回顾
原本本专栏到前面写的4篇文章已经结束了,结果公司前端哥们儿搞了一个笑话,我们项目在IE中打不开;注意是打不开,不是兼容性不好;最后经过前端专家以及架构师领导们一致商量,既然前端不能实现,我们还有后端人员呀!?让后端人员转码嘛!问题不就解决啦?反正我们只要出结果就可以了。
哎,还有什么好说的,只能撸码呀!
前面几篇文章主要讲了vlc、浏览器中集成vlc、Javacv抓图以及Javacv录制视频等相关内容;本文将讲解如何运用websocket实时播放rtsp流媒体;刚让转码时也尝试过其它方式,但是感觉其它方法都很麻烦要求搭建各种环境或者服务器,本文将完全用代码的方式实现该骚操作。
不废话,上才艺!
2 websocket搭建
因为在以前项目中没有使用过websocket,在这儿也简单提一下websocket的使用。
什么是websocket?
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
2.1 引包
<!-- springboot集成websocket -->
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
2.2 配置
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
2.3 websocket测试demo
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
@Slf4j
@ServerEndpoint(value = "/webSocket")
@Component
public class WebSocketReceiveMessage {
//用来存放每个客户端对应的WebSocketReceiveMessage对象,适用于同时与多个客户端通信
public static CopyOnWriteArraySet<WebSocketReceiveMessage> webSocketSet = new CopyOnWriteArraySet<>();
//与某个客户端的连接会话,通过它实现消息推送
private Session session;
/**
* 建立连接成功调用的方法
*/
@OnOpen
public void onOpen(Session session) {
this.session = session;
// 添加到set中
webSocketSet.add(this);
}
/**
* 关闭连接调用的方法
*/
@OnClose
public void onClose(Session closeSession){
webSocketSet.remove(this);
}
/**
* 收到客户端消息调用的方法
*/
@OnMessage
public void onMessage(String message,Session mysession) throws Exception{
log.info("--------on message-------");
for (WebSocketReceiveMessage item: webSocketSet) {
item.sendAllMessage(message);
}
}
//向该Session连接的用户发送字符串数据
public void sendAllMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
}
2.3 websocket验证
在网上找了一个测试websocket的地址websocket接口验证
测试连接与消息分发
后台打印信息
2.4 几个注解说明
注解 | 描述 |
---|---|
@OnOpen | 连接建立时触发 |
@OnClose | 连接关闭时触发 |
@OnMessage | 收到消息时触发 |
@OnError | 通信发生错误时触发 |
3 总结
由于时间有限,今天先简单介绍websocket的使用,等忙过这段时间在实现websocket根据javacv获取帧实时播放rtsp视频流;
写在最后,要跟对领导,跟对团队才有机会学习更多新东西,敲跟多代码,如果你也赞同我的观点,麻烦你关注点赞加评论。如果文章中有什么不对的地方希望大佬指出,个人能力有限。谢谢大家!
欢迎转载,转载请注明出处!
更多推荐
所有评论(0)