丹凤千字科普:vray3.40.01安装步骤(详细资料介绍)

Java监控直播流从RTSP协议转换到RTMP、HLS和HTTP FLV协议并返回给浏览器
目录
一、了解音视频流协议
二、方案一:RTSP转RTMP
三、方案三:RTSP转HTTP FLV(采用)
需求背景:
在做之前项目的时候,有一个对接摄像头实时播放的需求。由于购买的摄像头数量不多,所以没有得到流媒体云服务。因此需要我们自己处理,使得在浏览器可以看到监控画面。由于我现在的环境是Windows,所以下面的操作都是在Windows环境下进行的,Linux环境操作类似。
一、了解音视频流协议:
媒体流协议对比...
二、方案一:RTSP转RTMP
此方案主要包括下载nginx及nginx-rtmp-module模块,配置nginx以支持rtmp协议,通过ffmpeg进行rtsp到rtmp的转换等步骤。测试成功后,如果发现延迟较高或有其他问题,可以考虑放弃该方案。
三、方案三:RTSP转HTTP FLV(采用)
1. 安装nginx-flv-module模块:安装过程与之前的模块类似,需要下载并解压到nginx的根目录下。
2. 使用Java代码执行ffmpeg命令:Java程序通过调用系统命令(如使用Runtime.exec或ProcessBuilder)执行ffmpeg命令进行rtsp转flv的操作。具体命令格式和参数需根据实际需求进行调整。
3. 前端使用flv.js播放:在前端页面引入flv.js库,配置播放器实例以播放转换后的flv流。
详细步骤:
(此部分详细介绍了方案三的每一个步骤,包括具体的命令和注意事项等)
需求继续研究补充...
ffmpeg命令学习链接... 等待补充...
测试是否成功:等待补充...
为什么放弃了用rtmp:由于RTMP需要安装flash才能播放,现代浏览器逐渐淘汰flash插件,因此选择其他更广泛支持的协议如HLS和HTTP FLV等。尽管RTMP在某些地方仍然得到支持,但为了更广泛的兼容性,选择其他方案是明智的选择。
补充说明:此博客的目的是为了复盘和扩展之前项目中的知识,对于具体的代码实现和详细步骤可能需要进一步的研究和整理。三:方案二 RTSP转HLS
1. Nginx配置:
之前的文章已经提到了Nginx的配置方案,其中涉及到HLS的部分需要特别注意。
2. 执行ffmpeg命令:
使用下面的ffmpeg命令将RTSP流转换为HLS格式:
bash
ffmpeg -i "rtsp://wowzaec2demo./vod/mp4:BigBuckBunny_115k.mp4" -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/hls/test
3. 检查Nginx根目录的`hls/test.m3u8`是否生成:
如果生成了`test.m3u8`文件,说明一切正常。
前端播放M3U8格式视频:
使用VideoJS简单使用示例:
javascript
var myVideo = videojs('myVideo',{
bigPlayButton : true,
textTrackDisplay : false,
posterImage: false,
errorDisplay : false,
});
myVideo.src({ type: 'application/x-mpegURL', src: '你的nginx ip:nginx http端口/hls/test.m3u8' });
myVideo.play(); // 视频播放
4. 认识M3U8格式:
M3U8文件存储了一个索引,以文本格式打开大概如下:
plaintext
EXTM3U
EXT-X-VERSION:3
EXT-X-MEDIA-SEQUENCE:56
EXT-X-TARGETDURATION:13
EXTINF:10.381,
test-56.ts
EXTINF:10.422,
test-57.ts
EXTINF:13.453,
test-58.ts
M3U8文件本身不是视频源,真正的视频源头是TS后缀的文件。
5. 为什么选择放弃HLS:
HLS协议在转码和网页加载过程中会有一定的延迟,主要是因为ffmepg需要等待一个切片的时间,然后将切片ts放到服务器中,并在m3u8文件中添加索引。网页在加载m3u8时,需要不断读取m3u8中的索引去加载ts文件,所以会有不断的TCP握手和请求过程,导致HLS对网速要求较高且存在延迟。对于需要低延迟的监控场景,HLS的兼容性较好,适合点播使用。
四:方案三 RTSP转HTTP FLV(采用)
1. 安装nginx-flv-module插件:
该插件需要编译安装,具体教程可以参考相关博客或CSDN文章。这里提供已编译好的插件下载地址和安装指南。
2. 配置Nginx:
根据提供的链接配置nginx的flv模块。主要的配置在rtmp模块中,包括端口、流复用的最大块大小等设置。还需要配置一个location指向/live,以处理flv直播请求。详细的配置可以查看提供的git仓库中的nginx配置文件。
3. 实现Java权限认证:
在nginx rtmp配置的钩子接口(如on_publish)中,设置HTTP认证接口地址为localhost:8081/auth。根据token的值来决定是否允许服务请求。具体的Java代码实现可以参考提供的例子。
使用的依赖是javaCV,其版本为`org.bytedeco:javacv-platform:1.5.2`。具体的Java代码实现可以创建一个App类,并在其中使用ProcessBuilder执行ffmpeg命令。
注意替换rtsp和rtmp的地址为实际的地址和token值。 执行流程可以创建JavaCV的Loader加载ffmpeg库,然后创建ProcessBuilder来执行ffmpeg命令并等待执行完成。 完成后可以测试HTTP-FLV链接来验证效果。 在VLC播放器中输入提供的链接地址进行播放测试。 成功播放后表示离成功不远啦!前端使用flv.js进行播放的代码可以参考给出的示例代码进行集成播放flv视频流。 确保设备的meta标签包括视口配置与后端flv播放器配置匹配以保持最佳的显示效果最终播放成功后任务结束结束完美播放大功告成总结以上为通过两个方案的rtsp转httpflv的主要步骤和代码实现供您参考和使用希望能够帮助您成功实现rtsp转httpflv的转换并顺利播放视频流。
