websocket播放rtsp方案之websocket简介

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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket是一种全双工通信协议,而RTSP(Real-Time Streaming Protocol)是一种用于实时流媒体的传输协议。虽然WebSocket原本设计用于在浏览器和服务器之间建立低延迟、高效的实时通信连接,但可以通过WebSocket播放RTSP流。 在使用WebSocket播放RTSP时,可以采取以下步骤: 1. 客户端与服务器建立WebSocket连接。 2. 客户端发送包含RTSP流地址的消息给服务器。 3. 服务器接收到消息后,解析RTSP流地址,并建立与该地址的RTSP连接。 4. 一旦RTSP连接建立成功,服务器开始接收来自RTSP流的数据。 5. 服务器将接收到的RTSP流数据通过WebSocket发送给客户端。 6. 客户端接收到WebSocket消息,解析数据并渲染播放器进行播放。 需要注意的是,WebSocket本身并不支持RTSP协议。因此,在服务器端需要使用一些库或框架来处理RTSP连接,并将数据流转发到WebSocket。类似的实现通常会使用一些第三方库,如Node.js中的ws(WebSocket模块)和ffmpeg(用于处理多种媒体流)。 通过WebSocket播放RTSP流能够实现实时的音视频传输,并且相较于传统的RTSP播放方式,不需要使用插件或特定的播放器,而是直接在浏览器端实现。这样,用户可以使用现代浏览器来播放RTSP流,无需额外安装插件或软件。 总结来说,通过WebSocket播放RTSP流可以实现实时的音视频传输,并且可以在现代浏览器中直接播放,无需额外插件或软件支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值