代码拉取完成,页面将自动刷新
同步操作将从 Moonlight_Z/rtsp2rtmp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
├── HikVision - 海康DLL及Java开发Demo压缩包
├── libraries - 第三方Jar包,调用海康DLL时需要用到,这两个Jar包的引入详见pom.xml
├── src
├── main
├── java
├── cache - 转流任务缓存管理
├── common - 常量类定义
├── config - 配置类,包括异步线程池配置、摄像头配置、海康DLL路径配置
├── controller - 测试接口用的controller
├── convert - 转流任务定义
├── handler - handler,包括转流的handler、大华接口的handler
├── hikvision - 海康SDK及handler
├── scheduling - 定时任务,只有一个清理转流任务的定时任务
├── util - util,只有一个httpUtil
├── vo
├── convert,转流用到的VO
├── dss,大华DSS用到的VO
├── hikvision,海康需要用到的VO
├── resources
├── static
├── hls-video 前端播放HLS流相关JS文件
├── rtsp-video 前端播放rtsp流相关JS文件,但是不知为何在本人机器上播不了
├── templates index.html H5页面示例
├── vue-example vue页面示例,需要安装video.js(npm install video.js),
参考: https://www.jianshu.com/p/8b8023c7ed37
中文文档: https://blog.csdn.net/qq285679784/article/details/86060723
├── windows-resource windows环境下rtsp转rtmp需要用到的资源
nginx编译rtmp模块:
先下载nginx-rtmp模块。传送门:https://github.com/arut/nginx-rtmp-module/
进入nginx安装目录,执行命令:
动态添加rtmp模块参考:
Linux nginx配置文件参考项目中的rtsp2rtmp nginx conf.txt文件
相关资源在 resources/windows-resource,相关资源说明如下:
一、Native HLS Playback插件-离线包.rar
该压缩包是一个Chrome扩展程序,解压后将其添加到Chrome的扩展程序中,就可以直接在Chrome中播放HLS视频流了
二、VLC3x64.rar
vlc压缩包。开源的跨平台多媒体播放器,可以播放绝大部分多媒体文件,以及 DVD、音频CD、VCD,也支持rtsp、rtmp等多种流媒体协议。
需要注意的是,如果尝试通过vlc将本地视频文件转RTSP,进行网络串流,然后使用ffmpeg或本项目进行rtsp转rtmp测试,这种做法是不可行的,
会报错说Could not open input,原因未知。
三、nginx 1.7.11.3 Gryphon.rar
Windows环境下编译好的nginx,里面已经编译好了rtmp模块,解压即可使用
一、加密视频JavaCPP无法停止转流
1. 异常描述:通过海康的SDK获取到了海康NVR上面所有的通道,且RTSP地址拼接无误,设备、网络等一切正常。
根据获取到的RTSP地址创建好转流任务后,没有任何视频画面播出,一直404。发现nginx配置的路径下没有创建对应的文件夹及m3u8、ts文件,
nginx日志除了访问的地址404以外没有任何其他异常信息输出,JavaCPP日志一直输出如下信息:
`2021-04-08 17:00:06.695 [JavaCPP Thread ID 20248] WARN org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bc0056c0] Error parsing NAL unit #0.
2021-04-08 17:00:06.698 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] PPS id out of range: 0
2021-04-08 17:00:06.698 [JavaCPP Thread ID 83092] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bc0024c0] PPS id out of range: 1
2021-04-08 17:00:06.701 [JavaCPP Thread ID 83092] WARN org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bc0024c0] Error parsing NAL unit #0.
2021-04-08 17:00:06.702 [JavaCPP Thread ID 23708] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45080] PPS id out of range: 0
2021-04-08 17:00:06.704 [JavaCPP Thread ID 23708] WARN org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45080] Error parsing NAL unit #0.
2021-04-08 17:00:06.704 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] vps_reserved_three_2bits is not three
2021-04-08 17:00:06.707 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] VPS 13 does not exist
2021-04-08 17:00:06.709 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] SPS 0 does not exist.
2021-04-08 17:00:06.709 [gm-camera-demo-async-task-1] WARN org.bytedeco.javacv.FFmpegLogCallback - [swscaler @ 00000030bc0369c0] deprecated pixel format used, make sure you did set range correctly
2021-04-08 17:00:06.710 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] PPS id out of range: 1
2021-04-08 17:00:06.713 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] PPS id out of range: 0
2021-04-08 17:00:06.713 [JavaCPP Thread ID 32048] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45500] vps_reserved_three_2bits is not three
2021-04-08 17:00:06.716 [JavaCPP Thread ID 32048] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45500] VPS 13 does not exist
2021-04-08 17:00:06.718 [JavaCPP Thread ID 32048] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45500] SPS 0 does not exist.
2021-04-08 17:00:06.719 [JavaCPP Thread ID 32048] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45500] PPS id out of range: 1
2021-04-08 17:00:06.721 [JavaCPP Thread ID 32048] WARN org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45500] Error parsing NAL unit #4.
2021-04-08 17:00:06.722 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] PPS id out of range: 0
2021-04-08 17:00:06.722 [JavaCPP Thread ID 80840] ERROR org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45980] PPS id out of range: 0
2021-04-08 17:00:06.725 [JavaCPP Thread ID 80840] WARN org.bytedeco.javacv.FFmpegLogCallback - [hevc @ 00000030bce45980] Error parsing NAL unit #0.
2021-04-08 17:00:06.726 [gm-camera-demo-async-task-1] ERROR org.bytedeco.javacv.FFmpegLogCallback - [NULL @ 00000030bce44c00] PPS id out of range: 0`
即使在转流任务被清除后,该JavaCPP线程依旧在疯狂运行,占用了大量系统资源,没办法只能重启程序才能彻底结束这些线程。
2. 解决办法:经过排除、对比后发现,这个NVR启用了萤石云的加密,在后台关闭加密后,就能够正常转流、播放了。
3. 遗留问题:想不通为什么转流任务被清除后,对应的JavaCPP线程依旧在疯狂运行,后续去bytedeco提个issue问问看
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。