网页flash视频抓取器(实时播放*敏*感*词*rtsp视频流实现视频流直播实现原理实现步骤安装)
优采云 发布时间: 2021-10-15 14:07网页flash视频抓取器(实时播放*敏*感*词*rtsp视频流实现视频流直播实现原理实现步骤安装)
最近项目中需要播放实时*敏*感*词*的rtsp视频流,所以做了一些研究。浏览器不能直接播放,只能通过插件或者转码来实现这个要求。
为了实现这一目标,可以使用许多解决方案,包括商业和开源解决方案。这里有一些开源解决方案。这里的所有解决方案我都试过了,有的成功了,有的没有成功。但是因为每个项目都不一样,这次失败的方法可能是通过改变项目来实现的。
方案一:html5+websocket_rtsp_proxy实现视频直播
实现原理
实施步骤
服务器安装流媒体服务器
客户端通过video标签播放
if (window.Streamedian) {
var errHandler = function(err){
console.log('err', err.message);
};
var infHandler = function(inf) {
console.log('info', inf)
};
var playerOptions = {
socket: "ws://localhost:8088/ws/",
redirectNativeMediaErrors : true,
bufferDuration: 30,
errorHandler: errHandler,
infoHandler: infHandler
};
var html5Player = document.getElementById("test_video");
html5Player.src = "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov";
var player = Streamedian.player('test_video', playerOptions);
window.onbeforeunload = function(){
player && player.destroy();
player = null;
Request = null;
}
}
复制代码
注意:测试时先到官网申请license key,否则socket只会识别localhost和127.0.0.1
利弊
参考链接
方案二:ffmpeg+nginx+video,rtsp转rtmp播放
Rtmp 是 adobe 开发的协议。一般使用adobe media server即可轻松搭建;随着开源时代的到来,一些大神开发了nginx的rtmp插件,也可以直接用nginx实现rtmp
rtmp方式最大的优势就是低延迟。经过测试,延迟一般在1-3秒,可以说是非常实时的;缺点是它是由 Adobe 开发的。rtmp的播放严重依赖flash,而且由于flash本身的安全性,大多数现代浏览器都禁用flash
实施步骤
安装 ffmpeg 工具 安装 nginx
注:Linux系统需要安装nginx-rtmp-module模块,Windows系统安装rtmp模块(如nginx 1.7.11.3 Gryphon)3.更改nginx配置
rtmp{
server{
listen 1935;
application live{
live on;
record off;
}
application hls{
live on;
hls on;
hls_path nginx-rtmp-module/hls;
hls_cleanup off;
}
}
}
复制代码
ffmpeg 转码
ffmpeg -i "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov" -f flv -r 25 -s 1080*720 -an "rtmp://127.0.0.1:1935/hls/mystream"
复制代码
视频播放
video
videojs.options.flash.swf = "./videojs/video-js.swf"
var player = videojs('test_video', {"autoplay":true});
player.play();
复制代码
注意:使用谷歌浏览器播放时,需要开启flash权限
参考链接
方案三:ffmpeg+video,rtsp转hls播放
HLS(HTTP Live Streaming)是苹果公司提出的一种基于http的协议。原理是将整个流一个一个的分割成小的视频文件,然后通过m3u8的一个文件列表来管理这些视频文件
HTTP Live Streaming 并不是真正的实时流媒体系统,因为与媒体段的大小和时长相对应,存在一定的潜在时延。在客户端,至少一个分段媒体文件下载完成后可以播放,通常需要下载两个媒体文件后才开始播放,以保证不同分段音视频之间的无缝连接。
另外,在客户端开始下载之前,必须等待服务器上的编码器和分流器生成至少一个TS文件,这也会带来潜在的延迟。
服务端软件将接收到的流缓存一段时间后打包成一个新的TS文件,然后更新m3u8文件。m3u8文件中只保留了最新的几个片段的索引,保证观众每次连接都能看到更新的内容,达到类似直播的效果。
这种方法理论上的最小延迟是一个ts文件的时长,一般是2-3个ts文件的时长。
实施步骤
安装ffmpeg工具ffmpeg转码
ffmpeg -i "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov" -c copy -f hls -hls_time 2.0 -hls_list_size 0 -hls_wrap 15 "D:/Program Files/html/hls/test.m3u8"
复制代码
hls 上的 ffmpeg 说明
视频播放
参考链接
方案四:VLC插件播放
播放步骤
下载安装vlc浏览器即可玩
复制代码
利弊
参考链接
其他解决方案 WebRTC
WebRTC 是一组支持 Web 浏览器实时音频和视频的 API。比如HTML5直接通过webRTC调用*敏*感*词*,但是如果要显示远程视频流,则需要将RTSP转换为WebRTC流进行web显示。
参考地址:/lulop-k/kur...
h5stream
参考地址:
GB28181
参考地址:
写的不清楚,请自行百度。网上有很多案例。如果您有任何建议,欢迎随时交流!