方式一:web3.0
此方式跟海康后台原理一样,安装WebComponentsKit插件,flash方式,推流稳定。支持H264和H265.缺点,只支持IE
下载路径
方式二:rtsp-web-converter-master
项目GitHub上找的,支持rtsp H.264推送,H.265不稳定
个人觉得是JavaAC哪里设置问题,贴出核心代码,希望懂的大佬,抚照一二
//grabber.setImageHeight(720);
//grabber.setImageWidth(1280);
stream = new ByteArrayOutputStream();
recorder = new FFmpegFrameRecorder(stream, grabber.getImageWidth(), grabber.getImageHeight(),
grabber.getAudioChannels());
recorder.setInterleaved(true);
recorder.setVideoOption("preset", "ultrafast");
recorder.setVideoOption("tune", "zerolatency");
recorder.setVideoOption("crf", "28");
recorder.setPixelFormat(avutil.AV_PIX_FMT_YUVJ420P);
recorder.setFrameRate(15);
recorder.setGopSize(60);
if (grabber.getAudioChannels() > 0) {
recorder.setAudioChannels(grabber.getAudioChannels());
recorder.setAudioBitrate(grabber.getAudioBitrate());
recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
}
recorder.setFormat("flv");
recorder.setVideoBitrate(2000000);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.start();
if (headers == null) {
headers = stream.toByteArray();
stream.reset();
writeResponse(headers);
}
while (runing) {
// 抓取一帧
Frame f = grabber.grab();
if (f != null) {
try {
// 转码
recorder.record(f);
} catch (Exception e) {
}
if (stream.size() > 0) {
byte[] b = stream.toByteArray();
stream.reset();
writeResponse(b);
if (outEntitys.isEmpty()) {
log.info("没有输出退出");
break;
}
}
}
Thread.sleep(5);
}
方式1&2 下载地址
https://download.csdn.net/download/zjy660358/12883451
方式三:rtsp_to_rtmp
本服务负责将各个监控设备的实时视频rtsp协议流,转换为rtmp协议流,推送给nginx的rtmp服务,
然后由nginx的rtmp模块将流切片,转换为m3u8+ts格式片断,然后由nginx对外提供web访问m3u8和ts片段的服务,供页面呈现
试了一下,只支持H.264
时间紧迫,项目中监控采用方式一,但是其他效果IE不支持。硬件解决。分个屏幕单独看监控