CN114827670A - 一种视频播放方法、装置及电子设备 - Google Patents

一种视频播放方法、装置及电子设备 Download PDF

Info

Publication number
CN114827670A
CN114827670A CN202210754255.1A CN202210754255A CN114827670A CN 114827670 A CN114827670 A CN 114827670A CN 202210754255 A CN202210754255 A CN 202210754255A CN 114827670 A CN114827670 A CN 114827670A
Authority
CN
China
Prior art keywords
video
format
client
played
hls
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210754255.1A
Other languages
English (en)
Inventor
周伟峰
马健坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Teoform Shenzhen Information Technology Co ltd
Original Assignee
Teoform Shenzhen Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Teoform Shenzhen Information Technology Co ltd filed Critical Teoform Shenzhen Information Technology Co ltd
Priority to CN202210754255.1A priority Critical patent/CN114827670A/zh
Publication of CN114827670A publication Critical patent/CN114827670A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明公开了一种视频播放方法、装置及电子设备,方法包括:预先在服务器中对视频格式转换的参数进行配置,通过WebSocket协议建立客户端与服务器之间的连接;获取客户端的视频格式转换请求,对视频格式转换请求进行解析;若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;将目标视频下发至客户端,以使得客户端播放HLS格式的目标视频。本发明实施例能够减少时间和空间的开销,可以更好的节省服务器资源和带宽;服务器可以随时主动给客户端下发数据,延迟明显更少,能够更实时地进行通讯。

Description

一种视频播放方法、装置及电子设备
技术领域
本发明涉及视频播放技术领域,尤其涉及一种视频播放方法、装置及电子设备。
背景技术
RTSP 是基于文本的多媒体播放控制协议,RTSP定义流格式,流数据经由RTP传输,RTSP实时效果非常好,适合视频聊天,视频监控等方向。实时消息传输协议RTMP(Real TimeMessage Protocol)用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载flash插件就可以直接播放。
传统音视频行业采用的是实时效果非常好的RTSP。直播行业的兴起,带动了实时播放流媒体协议RTMP的快速发展,由于flash的强大,往年所有的浏览器都支持flash,我们使用action script即可实现雷同ocx控件的功能,包括设计到系统权限操作的功能。所以到现在一些企业或者事业单位还是使用RTSP和RTMP居多。而且不同单位的RTSP和RTMP各不相同。比如RTMP包括RTMP基本协议以及RTMPS、RTMPT、RTMPE等多种变种。
不过,传统的音视频基于硬件设备,硬件解码器,投屏基于插件,所以用户必须安装指定厂家的桌面应用,原生RTSP进行浏览器播放基本无法兼容,要通过协议转换才能播放。而RTMP是Adobe私有协议,权限收到限制,需要flash插件的支持。从google带头宣布2021年12月份不在支持flash之后,flash渐渐退出浏览器的舞台,剩下的支持插件的浏览器剩下ie,受众有限。再者,RTMP从采集到播放是一条数据流,会造成耗费大量的冗余计算,并且增加了多台服务器共同操作的运行成本。
关于实时通信机制方面。之前要实现消息实时推送以两种方式为主,一种是ajax咨询,由服务端不停地请求服务器端,查询有没有新的消息,然后再由服务器返回结果;另外一种是long poll,通过一次请求询问服务器是否有新消息通知,若没有的话就会保持长连接,一直到客户端传来消息才回返回,返回之后客户端再次建立连接,周而复始。可是这两种都是单向连接,服务器都不是自动发给服务器的,需要被动的请求。
现有技术中浏览器需要播放RTMP和RTSP格式的视频,需要不断的向服务器发出请求,然而 HTTP 请求与响应可能会包含较长的头部,其中真正有效的数据可能只是很小的一部分,造成许多不必要服务器资源和宽带浪费。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明提供了一种视频播放方法、装置及电子设备,旨在解决现有技术中浏览器需要播放RTMP和RTSP格式的视频,需要不断的向服务器发出请求,然而 HTTP 请求与响应可能会包含较长的头部,其中真正有效的数据可能只是很小的一部分,造成许多不必要服务器资源和宽带浪费的问题。
本发明的技术方案如下:
本发明第一实施例提供了一种视频播放方法,所述方法包括:
预先在服务器中对视频格式转换的参数进行配置,所述视频格式转换包括将RTSP格式的视频转换为HLS格式的视频,以及将RTMP格式的视频转换为HLS格式的视频;
通过WebSocket协议建立客户端与服务器之间的连接;
获取客户端的视频格式转换请求,对所述视频格式转换请求进行解析;
若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;
将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频。
进一步地,所述通过WebSocket协议建立客户端与服务器之间的连接,包括:
通过客户端向服务器发送一个特定的HTTP请求,所述特定的HTTP请求包括协议升级申请信息、随机键值及版本信息;
服务器接收到所述特定的HTTP请求,对所述特定的HTTP请求进行解析;
解析完成后,对所述随机键值进行加密,将加密后的随机键值及握手成功消息返回至客户端,完成客户端与服务器之间的连接。
进一步地,所述预先在服务器中对视频格式转换的参数进行配置,包括:
预先在服务器中安装多媒体视频处理工具,并对多媒体视频处理工具的环境变量进行配置;
预先在服务器中对反向代理web服务器的参数进行配置;
预先在服务器中对实现WebSocket实时通信的参数进行配置。
进一步地,所述若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频,包括:
若视频格式转换请求内容为将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP格式,则通过多媒体处理工具将RTSP格式的视频转换为RTMP实时流格式的视频;
通过重启反向代理web服务器,调用多媒体处理工具将RTMP实时流格式的视频转换为指定格式的视频文件;
将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频。
进一步地,所述视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频,包括:
若视频格式转换请求内容为将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTMP格式,则通过重启反向代理web服务器,调用多媒体处理工具将RTMP实时流格式的视频转换为指定格式的视频文件;
将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频。
进一步地,所述将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频后,还包括:
通过指定在线播放器对视频播放情况进行测试;
获取测试结果,若视频播放成功,则视频转换成功。
进一步地,所述将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频,包括:
基于反向代理web服务器将指定格式的视频文件下发至客户端,以使得客户端播放所述HLS格式的目标视频。
本发明的另一实施例提供了一种视频播放装置,装置包括:
服务器参数配置模块,用于预先在服务器中对视频格式转换的参数进行配置,所述视频格式转换包括将RTSP格式的视频转换为HLS格式的视频,以及将RTMP格式的视频转换为HLS格式的视频;
连接建立模块,用于通过WebSocket协议建立客户端与服务器之间的连接;
视频转换请求解析模块,用于获取客户端的视频格式转换请求,对所述视频格式转换请求进行解析;
视频格式转换模块,用于若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;
传输模块,用于将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频。
本发明的另一实施例提供了一种电子设备,所述电子设备包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的视频播放方法。
本发明的另一实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的视频播放方法。
有益效果:本发明实施例在创建客户端与服务器连接时能够减少运行操作系统程序对系统进行管理花费的时间和空间的开销,可以更好的节省服务器资源和带宽;服务器可以随时主动给客户端下发数据,相对于 HTTP 请求需要等待客户端发起请求服务端才能响应,延迟明显更少,能够更实时地进行通讯。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明一种视频播放方法较佳实施例的流程图;
图2为本发明一种视频播放方法具体应用实施例的流程示意图;
图3为本发明一种视频播放装置的较佳实施例的功能模块示意图;
图4为本发明一种电子设备的较佳实施例的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合附图对本发明实施例进行介绍。
针对上述问题,本发明实施例提供了一种视频播放方法,请参阅图1,图1为本发明一种视频播放方法较佳实施例的流程图。如图1所示,其包括:
步骤S100、预先在服务器中对视频格式转换的参数进行配置;
步骤S200、通过WebSocket协议建立客户端与服务器之间的连接;
步骤S300、获取客户端的视频格式转换请求,对所述视频格式转换请求进行解析;
步骤S400、若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;
步骤S500、将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频。
具体实施时,本发明实施例中视频格式转换包括将RTSP格式的视频转换为HLS格式的视频,以及将RTMP格式的视频转换为HLS格式的视频。基于WebSocket协议实时通信原理,实现将RTSP和RTMP动态转换为HLS的任务调用器。其中,WebSocket协议是基于TCP协议并遵从HTTP协议的握手规范的一种通讯协议,即基于TCP面向连接运输层协议、可靠交付服务、双全工通信等特点,并且握手被http 服务器当作 Upgrade request http包处理,客户端与服务器之间只有在握手阶段是使用HTTP协议的“请求-响应”模式交互,而连接建立之后的通信则使用双向模式交互,不论是客户端还是服务端都可以随时将数据发送给对方。WebSocket协议通过发送连接请求,握手,验证握手信息这三个步骤与服务器建立WebSocket连接。WebSocket 只需要建立一次连接,就可以一直保持连接状态。
HLS的实现原理是服务器将视频切割成一小段一小段的ts(Transport Stream)文件,ts全称为MPEG2-TS, MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。这些ts文件组成一个m3u8格式的商品描述文件,浏览器下载对应的m3u8文件后,根据其中的内容边下载边播放对应的视频文件。
基于上述WebSocket协议实时通信原理,借助Web服务器Nginx和媒体文件处理工具FFmpeg,在客户端请求将流媒体协议RTSP(Real-Time Stream Protocol)、RTMP(RealTime Message Protocol)转换为流媒体协议HLS(HTTP Live Streaming)的时候,服务器才会进行转换并下放数据给客户端,如果没有需求则不会进行转换的动态转换。其中,面向连接的运输层协议指的是在使用协议之前先要建立TCP连接,在传送数据完成后要释放已经建立的TCP连接。可靠交付服务指的是通过TCP连接的数据无差错、不丢失、不重复并且按序列到达的特点。双全工通信指的是允许通信双方的应用进程在任何时候都能发送数据。
在一个实施例中,通过WebSocket协议建立客户端与服务器之间的连接,包括:
通过客户端向服务器发送一个特定的HTTP请求,所述特定的HTTP请求包括协议升级申请信息、随机键值及版本信息;
服务器接收到所述特定的HTTP请求,对所述特定的HTTP请求进行解析;
解析完成后,对所述随机键值进行加密,将加密后的随机键值及握手成功消息返回至客户端,完成客户端与服务器之间的连接。
具体实施时,创建WebSocket对象,并且打开连接,接收消息。建立WebSocket连接,首先客户端先要向服务端发送一个特殊的HTTP请求,使用的协议不是http或 https,而是使用过 ws或 wss(一个非安全的,一个安全的,类似前两者之间的差别),请求头里面要附加一个申请协议升级的信息 Upgrade:websocket,还有随机生成一个 Sec-WebSocket-Key的值,及版本信息 Sec-WebSocket-Version等等。服务端收到客户端的请求后,会解析该请求的信息,包括请求协议升级,版本校验,以及将 Sec-WebSocket-Key的加密后以 sec-websocket-accept的值返回给客户端,这样客户端和服务端的连接就建立了。
在一个实施例中,预先在服务器中对视频格式转换的参数进行配置,包括:
预先在服务器中安装多媒体视频处理工具,并对多媒体视频处理工具的环境变量进行配置;
预先在服务器中对反向代理web服务器的参数进行配置;
预先在服务器中对实现WebSocket实时通信的参数进行配置。
具体实施时,服务器配置包括多媒体视频处理工具配置、反向代理web服务器配置以及实现WebSocket实时通信的参数配置。
以多媒体视频处理工具为FFmpeg为例, FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。安装好FFmpeg后配置环境变量,启动FFmpeg。
以反向代理web服务器为 nginx-rtmp为例,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。安装Nginx1.18.0以上版本,并修改配置文件。进入conf目录下,把nginx-win.conf复制一份,重命名为nginx-win-rtmp.conf,修改nginx-win-rtmp.conf文件。然后下载nginx-rtmp-module插件,找到nginx目录,输入cmd命令,启动Nginx。
WebSocket实时通信的配置流程如下:在SpringBoot的pom.xml文件里添加依赖;在配置中加入 WebSocketConfig.java;新建component文件夹,加入WebSocketServer.java;设置WebConfig.java,放开拦截;新建Im.vue;配置router 路由。
在一个实施例中,若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频,包括:
若视频格式转换请求内容为将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP格式,则通过多媒体处理工具将RTSP格式的视频转换为RTMP实时流格式的视频;
通过重启反向代理web服务器,调用多媒体处理工具将RTMP实时流格式的视频转换为指定格式的视频文件;
将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频。
具体实施时,若待播放的视频为RTSP格式,则需要通过反向代理web服务器将RTSP转换为RTMP实时流。
如果客户没有发出请求,那么服务器是不会进行操作的,当客户发送将RTSP转换为HLS的请求时,相应设备的RTSP流地址也会发送到服务器。根据设备代码从配置文件中读取相应设备的RTSP流地址。
例如,设置rtmp协议模块,设定其为live,并对其相关信息进行配置。
ffmpeg -re -rtsp_transport tcp -stimeout 20000000 -i "rtsp://admin:123456@10.153.102.50:554/Streaming/Channels/101transportmode=unicast" -buffer_size 1024000 -max_delay 500000 -codec:v libx264 -r 25 -rtbufsize 10M -s 1280x720 -map:v 0 -an -f flv rtmp://10.163.96.161:1835/live/yan50;
上述示例中各参数含义为:re 表示ffmpeg不以最高的频率传输;
stimeout 解析错误的网络流时,会导致该函数长时间不返回。这里设置超时为2秒;
i 输入要处理的视频文件路径;
buffer_size 设置缓存区,可以减少花屏;
-codec:v 使用264编码;
-r 视频流频率,人眼正常为25帧,所以设置为25;
-s 分辨率;
-max_delay 设置最大延时时间;
-an 不处理音频;
rtmp://10.163.96.161:1835/live/yan50 rtmp是实时直播流,10.163.96.161是部署nginx的地址,1835就是我们配置nginx时设置的端口。yan50就是房间号(可自己定义)。
设置bat脚本实现断点续传。创建一个为yan50.bat文件,设置服务停止60s后,会自动调用ffmpeg的命令INTERVAL=60,这样一来一旦出现断点续传问题,也可以从已经推流的时间点后继续推流,节省操作时间。其中,断点续传问题指的是文件推流过程中由于客户网络、电脑硬件环境问题导致推流失败,需要重新推流。
运行ffmpeg命令后,可输入localhost:5080/stat查看推流的情况来验证rtsp转码推流到nginx的rtmp上。
重新启动一下Nginx,进入sbin目录下,输入对应的消息后,若无提示信息的话,就说明重启成功了。
重启成功后,基于Javacv通过调用ffmpeg库将RTSP持续写向Niginx的RTMP服务端口,并尝试读取m3u8文件内容后返回回去;Nginx的rtmp模块接收推送流,进行切片生成ts片段,并生成m3u8格式媒体列表,存入硬盘中。在路径nginx-win-rtmp.conf的配置信息查找对应的路径看是否生成HLS所需的.ts和.m3u8文件,如果生成HLS所需的.ts和.m3u8文件,则说明推流成功。
在一个实施例中,若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频,包括:
若视频格式转换请求内容为将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTMP格式,则通过重启反向代理web服务器,调用多媒体处理工具将RTMP实时流格式的视频转换为指定格式的视频文件;
将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频。
具体实施时,如果是RTMP流转换为HLS的话,那么不需要进行将RTSP转换为RTMP实时流的转换操作,若播放请求一旦不是上述两种流媒体协议转换的话,直接返回客户端,直到发出RTSP/RTMP流转换为HLS的请求时再进行流程操作处理。
重新启动一下Nginx,进入sbin目录下,输入对应的消息后,若无提示信息的话,就说明重启成功了。
重启成功后,基于Javacv通过调用ffmpeg库将RTSP持续写向Niginx的RTMP服务端口,并尝试读取m3u8文件内容后返回回去;Nginx的rtmp模块接收推送流,进行切片生成ts片段,并生成m3u8格式媒体列表,存入硬盘中。在路径nginx-win-rtmp.conf的配置信息查找对应的路径看是否生成HLS所需的.ts和.m3u8文件,如果生成HLS所需的.ts和.m3u8文件,则说明推流成功。
在一个实施例中,将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频后,还包括:
通过指定在线播放器对视频播放情况进行测试;
获取测试结果,若视频播放成功,则视频转换成功。
具体实施时,将生成的ts文件夹test全部拷贝到nginx的html目录,进行反向代理,然后随便找一个m3u8在线播放器测试hls播放是否正常,如http://m3u8.team/index.html、http://tool.liumingye.cn/m3u8/等等,然后输入hsl地址,查看视频是否正常播放。
在一个实施例中,将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频,包括:
基于反向代理web服务器将指定格式的视频文件下发至客户端,以使得客户端播放所述HLS格式的目标视频。
具体实施时,由nginx提供对外访问ts文件的服务给到客户端,以使得客户端播放所述HLS格式的目标视频。
在一些其他的实施例,客户端和服务端都可发送一个close控制帧,另一端主动关闭连接。
当客户端所需求的转换执行完毕时,关闭连接,直到客户端重新需求时,打开连接,并重新接收消息。
本发明还提供了一种视频播放方法的具体应用实施例的流程图,如图2所示,方法包括:
开始;
服务器配置;
判断客户端是否发送转换请求;
若客户端发送转换请求,则启动服务器;
判断转换请求是否为RSTP转换HLS请求;
若转换请求是为RSTP转换HLS请求,则进行FFmpeg推流,重启Nginx;若转换请求不是RSTP转换HLS请求,则判断是否为转换请求是不是RTMP转换HLS请求,若转换请求是RTMP转换HLS请求,则重启Nginx;
进入FFmpeg处理,生成特定格式的文件;
进行Nginx测试;
测试成功后,将特定格式的文件反馈至客户端;
对客户端进行监测,判断客户端是否继续请求转换;
若客户端未发送转换请求,则对客户端进行监测,判断客户端是否继续请求转换;
若客户端发送的转换请求即不是RSTP转换HLS请求也不是RTMP转换HLS请求,则对客户端进行监测,判断客户端是否继续请求转换;
若客户端继续请求转换,则继续进行文件转换操作;
若客户端不再继续请求转换,则结束操作。
本发明实施例提供了一种视频播放方法,基于WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输的原理。可以实现RTSP、RTMP动态转换为HLS。
不仅让之前的RTSP和RTMP音视频资源得到转换应用,只有客户端发送请求的时候,服务器才会进行转换并下放数据给客户端,如果没有需求则不会进行转换的动态转换。并且可以不用在flash插件的情况下支持在多个浏览器观看,而且允许用户从不同的备用源以不同的速率下载同样的资源片段,允许流媒体会话适应不同的数据速率。
需要说明的是,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,亦可以交换执行等等。
本发明另一实施例提供一种视频播放装置,如图3所示,装置1包括:
服务器参数配置模块11,用于预先在服务器中对视频格式转换的参数进行配置,所述视频格式转换包括将RTSP格式的视频转换为HLS格式的视频,以及将RTMP格式的视频转换为HLS格式的视频;
连接建立模块12,用于通过WebSocket协议建立客户端与服务器之间的连接;
视频转换请求解析模块13,用于获取客户端的视频格式转换请求,对所述视频格式转换请求进行解析;
视频格式转换模块14,用于若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;
传输模块15,用于将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频。
具体实施方式见方法实施例,此处不再赘述。
本发明另一实施例提供一种电子设备,如图4所示,电子设备10包括:
一个或多个处理器110以及存储器120,图4中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图4中以通过总线连接为例。
处理器110用于完成电子设备10的各种控件逻辑,其可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISCMachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件控件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,DSP 和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP 核、或任何其它这种配置。
存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的视频播放方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行设备10的各种功能应用以及数据处理,即实现上述方法实施例中的视频播放方法。
存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据设备10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的视频播放方法,例如,执行以上描述的图1中的方法步骤S100至步骤S500。
本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S500。
作为示例,非易失性存储介质能够包括只读存储器(ROM)、可编程ROM (PROM)、电可编程ROM (EPROM)、电可擦ROM (EEPROM)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器 (RAM)。通过说明并非限制,RAM可以以诸如同步 RAM(SRAM)、 动态 RAM、(DRAM)、同步DRAM (SDRAM)、双数据速率SDRAM (DDR SDRAM)、增强型SDRAM(ESDRAM)、Synchlink DRAM (SLDRAM) 以及直接Rambus (兰巴斯) RAM (DRRAM) 之类的许多形式得到。本文中所描述的操作环境的所公开的存储器控件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使处理器执行上述方法实施例的视频播放方法。例如,执行以上描述的图1中的方法步骤S100至步骤S500。
以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分的方法。
除了其他之外,诸如"能够'、"能"、"可能"或"可以"之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地还旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个或多个实施方式必须包括用于在有或没有输入或提示的情况下判定这些特征、元件和/或操作是否被包括或者将在任何特定实施方式中被执行的逻辑。
已经在本文中在本说明书和附图中描述的内容包括能够提供视频播放方法及装置的示例。当然,不能够出于描述本公开的各种特征的目的来描述元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公开做出各种修改。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,但是它们在通用和描述性意义上被使用并且不用于限制的目的。

Claims (10)

1.一种视频播放方法,其特征在于,所述方法包括:
预先在服务器中对视频格式转换的参数进行配置,所述视频格式转换包括将RTSP格式的视频转换为HLS格式的视频,以及将RTMP格式的视频转换为HLS格式的视频;
通过WebSocket协议建立客户端与服务器之间的连接;
获取客户端的视频格式转换请求,对所述视频格式转换请求进行解析;
若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;
将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频。
2.根据权利要求1所述的方法,其特征在于,所述通过WebSocket协议建立客户端与服务器之间的连接,包括:
通过客户端向服务器发送一个特定的HTTP请求,所述特定的HTTP请求包括协议升级申请信息、随机键值及版本信息;
服务器接收到所述特定的HTTP请求,对所述特定的HTTP请求进行解析;
解析完成后,对所述随机键值进行加密,将加密后的随机键值及握手成功消息返回至客户端,完成客户端与服务器之间的连接。
3.根据权利要求2所述的方法,其特征在于,所述预先在服务器中对视频格式转换的参数进行配置,包括:
预先在服务器中安装多媒体视频处理工具,并对多媒体视频处理工具的环境变量进行配置;
预先在服务器中对反向代理web服务器的参数进行配置;
预先在服务器中对实现WebSocket实时通信的参数进行配置。
4.根据权利要求3所述的方法,其特征在于,所述若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频,包括:
若视频格式转换请求内容为将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP格式,则通过多媒体处理工具将RTSP格式的视频转换为RTMP实时流格式的视频;
通过重启反向代理web服务器,调用多媒体处理工具将RTMP实时流格式的视频转换为指定格式的视频文件;
将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频。
5.根据权利要求3所述的方法,其特征在于,所述若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频,包括:
若视频格式转换请求内容为将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTMP格式,则通过重启反向代理web服务器,调用多媒体处理工具将RTMP实时流格式的视频转换为指定格式的视频文件;
将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频。
6.根据权利要求4或5任一项所述的方法,其特征在于,所述将所述指定格式的视频文件拷贝至反向代理web服务器的指定目录,进行反向代理,完成将待播放的视频转换为HLS格式的目标视频后,还包括:
通过指定在线播放器对视频播放情况进行测试;
获取测试结果,若视频播放成功,则视频转换成功。
7.根据权利要求6所述的方法,其特征在于,所述将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频,包括:
基于反向代理web服务器将指定格式的视频文件下发至客户端,以使得客户端播放所述HLS格式的目标视频。
8.一种视频播放装置,其特征在于,所述装置包括:
服务器参数配置模块,用于预先在服务器中对视频格式转换的参数进行配置,所述视频格式转换包括将RTSP格式的视频转换为HLS格式的视频,以及将RTMP格式的视频转换为HLS格式的视频;
连接建立模块,用于通过WebSocket协议建立客户端与服务器之间的连接;
视频转换请求解析模块,用于获取客户端的视频格式转换请求,对所述视频格式转换请求进行解析;
视频格式转换模块,用于若视频格式转换请求内容为请求将待播放的视频转换为HLS格式的视频,且待播放的视频格式为RTSP或RTMP格式,则根据预设的配置参数,将待播放的视频转换为HLS格式的目标视频;
传输模块,用于将所述目标视频下发至客户端,以使得客户端播放所述HLS格式的目标视频。
9.一种电子设备,其特征在于,所述电子设备包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7任一项所述的视频播放方法。
10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的视频播放方法。
CN202210754255.1A 2022-06-30 2022-06-30 一种视频播放方法、装置及电子设备 Pending CN114827670A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210754255.1A CN114827670A (zh) 2022-06-30 2022-06-30 一种视频播放方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210754255.1A CN114827670A (zh) 2022-06-30 2022-06-30 一种视频播放方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN114827670A true CN114827670A (zh) 2022-07-29

Family

ID=82523297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210754255.1A Pending CN114827670A (zh) 2022-06-30 2022-06-30 一种视频播放方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN114827670A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022680A (zh) * 2022-08-03 2022-09-06 海易科技(北京)有限公司 视频播放方法、装置、电子设备和计算机可读介质
CN115988230A (zh) * 2022-12-15 2023-04-18 北极星云空间技术股份有限公司 基于gop转码和虚拟文件实现低延迟hls直播的方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160337424A1 (en) * 2015-05-13 2016-11-17 Qualcomm Incorporated Transferring media data using a websocket subprotocol
CN107342934A (zh) * 2017-06-19 2017-11-10 浪潮金融信息技术有限公司 一种基于WebSocket的混合模式移动应用实时消息推送方法及系统
CN108092995A (zh) * 2018-01-12 2018-05-29 珠海市杰理科技股份有限公司 流媒体数据处理方法、装置、计算机设备和存储介质
WO2019134248A1 (zh) * 2018-01-03 2019-07-11 平安科技(深圳)有限公司 视频文件处理方法、应用服务器及计算机可读存储介质
CN112367525A (zh) * 2020-10-20 2021-02-12 北京大学 基于教室利旧设备的在线课堂视频直播系统及方法
WO2021093653A1 (zh) * 2019-11-15 2021-05-20 中兴通讯股份有限公司 一种用户可轻松接入的安防方法、装置及系统
CN112954392A (zh) * 2021-04-07 2021-06-11 多彩贵州印象网络传媒股份有限公司 一种自动实现视频格式转换处理的平台
CN113973214A (zh) * 2021-09-30 2022-01-25 中通服科信信息技术有限公司 视频流格式转换方法、装置和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160337424A1 (en) * 2015-05-13 2016-11-17 Qualcomm Incorporated Transferring media data using a websocket subprotocol
CN107342934A (zh) * 2017-06-19 2017-11-10 浪潮金融信息技术有限公司 一种基于WebSocket的混合模式移动应用实时消息推送方法及系统
WO2019134248A1 (zh) * 2018-01-03 2019-07-11 平安科技(深圳)有限公司 视频文件处理方法、应用服务器及计算机可读存储介质
CN108092995A (zh) * 2018-01-12 2018-05-29 珠海市杰理科技股份有限公司 流媒体数据处理方法、装置、计算机设备和存储介质
WO2021093653A1 (zh) * 2019-11-15 2021-05-20 中兴通讯股份有限公司 一种用户可轻松接入的安防方法、装置及系统
CN112367525A (zh) * 2020-10-20 2021-02-12 北京大学 基于教室利旧设备的在线课堂视频直播系统及方法
CN112954392A (zh) * 2021-04-07 2021-06-11 多彩贵州印象网络传媒股份有限公司 一种自动实现视频格式转换处理的平台
CN113973214A (zh) * 2021-09-30 2022-01-25 中通服科信信息技术有限公司 视频流格式转换方法、装置和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
程序猿学社: "windows下搭建基于nginx的rtmp服务器,实现rtsp推流到rtmp", 《CSDN,HTTPS://BLOG.CSDN.NET/QQ_16855077/ARTICLE/DETAILS/108123133》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022680A (zh) * 2022-08-03 2022-09-06 海易科技(北京)有限公司 视频播放方法、装置、电子设备和计算机可读介质
CN115022680B (zh) * 2022-08-03 2022-11-01 海易科技(北京)有限公司 视频播放方法、装置、电子设备和计算机可读介质
CN115988230A (zh) * 2022-12-15 2023-04-18 北极星云空间技术股份有限公司 基于gop转码和虚拟文件实现低延迟hls直播的方法
CN115988230B (zh) * 2022-12-15 2024-04-30 北极星云空间技术股份有限公司 基于gop转码和虚拟文件实现低延迟hls直播的方法

Similar Documents

Publication Publication Date Title
US10601887B2 (en) Stream handling using an intermediate format
CN107222484B (zh) 支持多协议输入和输出的流媒体服务器系统
US7865599B2 (en) Methods and apparatus for supporting transmission of streaming data
US9038116B1 (en) Method and system for recording streams
US20170111665A1 (en) Multiple bitrate format-agnostic streaming architecture
RU2406233C2 (ru) Передача большого объема сообщений при использовании одиночного нттр-запроса
CN114827670A (zh) 一种视频播放方法、装置及电子设备
KR102110421B1 (ko) 클라이언트 장치에 시청각 컨텐츠를 전달하는 시스템 및 방법
US20150256600A1 (en) Systems and methods for media format substitution
US8683065B2 (en) Multicast content provider
CN105451071B (zh) 一种视频流的处理方法、装置和系统
WO2015176470A1 (zh) 一种http协议的缓存状态更新方法和设备、处理机
CN114025191B (zh) 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统
CN107835257A (zh) 一种会话管理方法和装置
US9485296B1 (en) Distribution network providing customized content at delivery
Meyn Browser to browser media streaming with HTML5
CN116261021B (zh) 一种视频流播放方法、装置、电子设备及存储介质
US9979722B2 (en) Method and apparatus for processing a RTCWEB authentication
US20090024755A1 (en) Method And Apparatus For Transferring Large Quantities Of Data
US8615548B1 (en) System and method for deferred data downloading
WO2021082945A1 (zh) 一种远程管理方法、系统、终端设备及服务器
US20130024543A1 (en) Methods for generating multiple responses to a single request message and devices thereof
US20230247110A1 (en) Method for controlling access to content implemented by a cache server
CN114500487B (zh) 一种端到端超文本传输协议转换方法
TW201322044A (zh) 防盜連結系統及其檔案文件下載方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20220729

RJ01 Rejection of invention patent application after publication