各位老铁们好,相信很多人对rtsp推流到服务器都不是特别的了解,因此呢,今天就来为大家分享下关于rtsp推流到服务器以及rtsp流浏览器播放方案的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
一、rtsp流浏览器播放方案
rtsp流在主流浏览器并不支持播放。比如大华的视频流:rtsp://admin:123456@
192.168.10.129/cam/realmonitor?channel=1&subtype=0,用vlc可以播放。但在浏览器会报ERR_UNKNOWN_URL_SCHEME。那如何在浏览器中播放呢。
以下列出几种方案。
1、安装插件(chrome最新版基本都不支持)
类如:kurento,vlc插件(谷歌浏览器版本41以下),vgx插件(不支持高版本,chrome72.0版本可用)等。
2、安装软件(中间件,基本都付费)
类如:Appemit(调用vlc插件播放rtsp),可以免安装的,目前只能windows,免费版会有提示。
猿大师中间件(底层调用VLC的ActiveX控件,实现在主流浏览器网页中内嵌播放多路RTSP的实时视频流),中间件收费的。
PluginOK(牛插)中间件。底层调用ActiveX控件VlcOcx.dll。(商业用途需付费使用)
3、服务器拉流转发及协议转换
示意图如下所示:
推流--------------服务器转发--------------拉流
方法一览:
a,vlc软件串流到协议,网页显示几个视频需启动几个vlc,只适合应急场景。
b,html5+ websocket_rtsp_proxy实现视频流直播,基于MSE(Media Source Extensions,W3C),扩展H5的功能。
步骤:服务器安装streamedian服务器,客户端通过video标签播放。
原型图:
价格:
c.基于nginx的rsmp转发
基于nginx实现rtmp转化,用flash实现播放。由于flash目前大多浏览器默认禁用,不推荐此方式。
步骤:安装ffmpeg工具,安装nginx。
另外nginx-rtmp-module也支持HLS协议,可以搭建基于hls的直播服务器。
d.rtsp转hls播放,通过ffmpeg转码
步骤:安装ffmpeg工具,ffmpeg转码。
形如:
ffmpeg-i"rtsp://admin:/cam/realmonitor?channel=1&subtype=0"-c copy-f hls-hls_time 2.0-hls_list_size 0-hls_wrap 15"D:/hls/test.m3u8"
缺点是直播流延时很大,对实时要求比较高的不满足要求。
案例:基于EasyDarwin拾建转码服务器。参考:
通过存储的m3u8去读取。
e.websocket代理推送,FFMPEG转码
此方法与a,b类似。但更实用。
以下提供两种方案:
(1)Gin+WebSocket+FFMPEG实现rtsp转码,参考:
通过FFMPEG把rstp转成,ginrtsp作为转发服务器,但需要自己写相应接口,需要了解go语言。
(2)node+ ffmpeg+ websocket+ flv.js,参考:
步骤:在node服务中建立websocket;通过fluent-ffmpeg转码,将RTSP流转为flv格式;通过flv.js连接websocket,并对获取的flv格式视频数据进行渲染播放。
import WebSocket from'ws'import webSocketStream from'websocket-stream/stream'import ffmpeg from'fluent-ffmpeg'//建立WebSocket服务const wss= new WebSocket.Server({ port: 8888, perMessageDeflate: false})//监听连接wss.on('connection', handleConnection)//连接时触发事件function handleConnection(ws, req){ //获取前端请求的流(前端websocket连接时后面带上流) const url= req.url.slice(1) //传入连接的ws客户端实例化一个流 const stream= webSocketStream(ws,{ binary: true}) //通过ffmpeg命令对实时流进行格式转换输出flv格式 const ffmpegCommand= ffmpeg(url) .addInputOption('-analyzeduration','100000','-max_delay','1000000') .on('start', function(){ console.log('Stream started.')}) .on('codecData', function(){ console.log('Stream codecData.')}) .on('error', function(err){ console.log('An error oured:', err.message) stream.end() }) .on('end', function(){ console.log('Stream end!') stream.end() }) .outputFormat('flv').videoCodec('copy').noAudio() stream.on('close', function(){ ffmpegCommand.kill('SIGKILL') }) try{ //执行命令传输到实例流中返回给客户端 ffmpegCommand.pipe(stream) } catch(error){ console.log(error) }}
优点全部基于js。前端即可搞定。
参考:
二、FFmpeg 代码实现流媒体推流(RTSP)
最近需要做实时录屏并把视频推流到RTSP服务器,具体流程是抓取屏幕内容(bitmap),并把bitmap转化为YUV,接着把YUV编码成H264,再把H264码流推到RTSP服务器;把采集到的PCM编码为AAC,再把AAC推流至RTSP服务器。
看了雷神的一篇文章:最简单的基于FFmpeg的推流器(以推送RTMP为例),他是把本地的视频文件推流至RTMP服务器,并不符合我的要求。
接着我找到另一篇文章: ffmpeg实现H264压缩并且推流至RTSP,这篇文章只有图像编码,并没有音频编码,并且推流之后并没有播放成功。
我综合上面两位大佬的思路,和查找一些资料实现了这个功能。
RTSP服务器使用的是 HyTime的免费试用版本。
我抓到的bitmap是BGRA格式的,所以使用的图像格式是 *_PIX_FMT_BGRA, cropImage是含有rgba图像的数组
调用:
由于我是实时抓取的屏幕, frame_yuv->pts设为当前的时间戳,以保证能正常播放。
调用:
调用:
其中pcm_buff是包含pcm数据的数组
使用udp传输时传到1多帧就断开了,原因不明,所以改用使用tcp协议传输
延迟有1.5秒左右
参考:
三、rtmp和rtsp的区别
流媒体协议RTMP,RTSP与HLS有什么不同
常用的流媒体协议主要有HTTP渐进和基于RTSP/RTP的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用HTTP渐进方法。在这个中le公司的HTTPLiveStreaming是这个方面的代表。
问题五:流媒体协议RTMP,RTSP与HLS有什么不同流媒体协议RTMP,RTSP与HLS有什么不同?HLS(HTTPLiveStreaming)Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。
RTMPAdobe公司的流媒体传输协议,端口号1935普通网络用户均可使用,包括非IOS平台用户,对非80端口(如1935)无限制的网络环境用户。优点:防HTTP,延时短。
RTSP和RTMP是2个不同的网络传输协议,RTSP(RealTimeStreamingProtocol),RFC2326,实时流传输协议,而RTMP是RealTimeMessagingProtocol(实时消息传输协议),网络摄像机的厂家,可根据自身的需求,采用不同协议来处理。
一般根据需求不同,价格也不同,都是当面了解的。做好需求和预算的心里准备,下一步就是找一个专业的制作平台,制作专属的。
网络直播在直播时都有什么协议
在网上看球赛直播,会用到ARP协议分析。ARP(AddressResolutionProtocol)解析协议用于将计算机的网络(IP32位)转化为物理(MAC48位)[RFC826]。
常用的传输协议RTMP,HLS,HTTP-FLV,HLS和HTTP-FLV都是基于HTTP的协议,RTMP是基于TCP。HLS即HttpLiveStreaming,是由苹果提出基于HTTP的流媒体传输协议。
直播属于直播人与直播公司签订直播合同在直播平台上进行直播的,所以属于劳动合同。主播与公司签订合同可能构成劳动关系,也可能构成委托关系。要根据是否接受上级的管理、工资的计算方式、是否按月发放等因素判断是否构成劳动关系。
RTMP(Real-TimeMessagingProtocol实时消息传送协议)的缩写,它是AdobeSystems公司为Flash播放器和服务器之间音频、视频和数据传输开发的协议。
目前推流是固定的RTMP协议,每个直播间都有对应的推流。了解更多服务优惠下方的“官方网址”客服20为你解
视频编*的区别是什么?
网络视频编码器和网络视频*区别为:功能不同、转化信号不同、特点不同。功能不同网络视频编码器:提供视频压缩功能,完成图象数据的采集。网络视频*:提供视频解压功能,完成图象数据的复原。
视频编码器:就是一个压缩的程序。视频*:就是一个解压缩的程序。视频编*要求高稳定实时传输,最好选择专业的厂家直销,有专业的研发团队技术。要有较高的兼容*,各种类型网络视频编解码。
主要有以下三个区别:硬件解码就是通过硬件进行视频的解码工作,其中硬件解码是由GPU来进行的,使用GPU解码能够降低CPU的工作负荷,降低功耗;软件解码则是通过软件本身占用的CPU进行解码,所以会增加CPU工作负荷,提升功耗。
目前H.264是比较符合高度压缩数字视频编*标准。高清视频编*的优势就是超低延迟(一般可达到40ms),高压缩比(支持300K-40Mbps动态码流编码),高清画质、高帧率(1080p/60帧)。
支持7×24小时运行,支持HDMI和VGA双输出,能够解*流流媒体协议,诸如RTMP、RTSP、UDP、TSOVERHTTP,TS等直播协议。支持1080P硬件实时解码,支持Web方式操作控制。更多推荐视频*解决方案原理。
视频编*,是指一个能够对数字视频进行压缩或者解压缩的程序或者设备。压缩和可能改变视频内容格式的过程,将模拟源更改为数字源。音频和视频都需要可定制的压缩方法。在压缩方面,目标是减少占用空间。
RTP,RTCP,RTSP等网络协议有何用途和区别
1、RTP(Real-timeTransportProtocol)是用于Inter上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作。其目的是提供时间信息和实现流同步。但RTP通常使用UDP来传送数据。
2、TCP协议是一种典型的有连接协议,而UDP协议则是典型的无连接服务。TCP/IP协议所包括的协议和工具TCP/IP协议是一组网络协议的集合,它主要包括以下几方面的协议和工具。
3、RTP一般与传输控制协议RTCP一块工作,RTP只负责实时数据的传输,RTCP负责对RTP的通讯和会话进行带外管理(如流量控制、拥塞控制、会话源管理等)。RTP使用一个偶数端口号,而相应RTCP流使用下一个(奇数,递增)端口号。
4、网络摄像机往往应用RTSP、RTP、RTCP、HTTP、UDP、TCP协议的不同组合来传输实时*较强的音视频流。常见的协议组合如下。
RTMP直播协议是什么?还有什么直播协议
RTMP(Real-TimeMessagingProtocol实时消息传送协议)的缩写,它是AdobeSystems公司为Flash播放器和服务器之间音频、视频和数据传输开发的协议。
RTMP:(可用于推流端和拉流端)RealTimeMessagingProtocol实时消息传输协议,RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。
p直播协议有三种:RTMP、FLV和HLS。
常用的流媒体协议主要有HTTP渐进和基于RTSP/RTP的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用HTTP渐进方法。在这个中le公司的HTTPLiveStreaming是这个方面的代表。
HTTP-FLV是一种将直播流模拟成FLV文件,通过HTTP协议进行的模式来实现流媒体传输的协议。RTMP即RealTimeMessagingProtocol,是AdobeSystems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。
流媒体协议RTMP、RTSP与HLS有什么不同?
常用的流媒体协议主要有HTTP渐进和基于RTSP/RTP的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用HTTP渐进方法。在这个中le公司的HTTPLiveStreaming是这个方面的代表。
问题五:流媒体协议RTMP,RTSP与HLS有什么不同流媒体协议RTMP,RTSP与HLS有什么不同?HLS(HTTPLiveStreaming)Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。
RTMPAdobe公司的流媒体传输协议,端口号1935普通网络用户均可使用,包括非IOS平台用户,对非80端口(如1935)无限制的网络环境用户。优点:防HTTP,延时短。
RTSP和RTMP是2个不同的网络传输协议,RTSP(RealTimeStreamingProtocol),RFC2326,实时流传输协议,而RTMP是RealTimeMessagingProtocol(实时消息传输协议),网络摄像机的厂家,可根据自身的需求,采用不同协议来处理。
HLS客户机很容易支持,只需要HTTP请求。HTTP是无状态的,只需要按顺序媒体片段。另外,网络兼容*好,HTTP报文可以很容易地通过防火墙或代理服务器。然而,与RTMP等长连接协议相比,交互式实时广播场景具有更高的延迟。