记录对接海康威视摄像头web端实时预览:Linux+ffmpeg+nginx转换RTSP视频流(完整版实现)_海康威视web预览

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make
sudo make install
2.1.2. zlib

若链接失效跳转官方https://zlib.net/

wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make
sudo make install
2.1.3. openssl
wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
tar -zxvf openssl-fips-2.0.10.tar.gz
cd openssl-fips-2.0.10
./config && make && make install
2.1.4. 下载nginx:nginx-http-flv-module
git clone https://github.com/winshining/nginx-http-flv-module.git
2.1.5. 安装nginx
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
# 编译时指定nginx-http-flv-module的目录
./configure --add-module=/opt/nginx-http-flv-module
make
sudo make install

到此,nginx已经安装完成了,接下来修改nginx的配置,配置模板在https://github.com/winshining/nginx-http-flv-module.git最后给出的example configuration取nginx.conf替换掉nginx默认的nginx.conf

配置模板中只需修改server_name改成自己服务器的IP地址

cd /usr/local/nginx/conf
mv nginx.conf nginx.conf_bak
# 上传配置模板..
# 启动nginx
cd /usr/local/nginx/sbin
./nginx

3. ffmpeg

3.1. ffmpeg介绍

它的官网为:https://ffmpeg.org/,由Fabrice Bellard(法国著名程序员Born in 1972)于2000年发起创建的开源项目。该人是个牛人,在很多领域都有很大的贡献。

FFmpeg是多媒体领域的万能工具。只要涉及音视频领域的处理,基本上没有它做不了的事情!通俗点讲,从视频录制、视频编辑再到播放,它都能做!

抖音,爱奇艺、腾讯视频、优酷视频,还有播放器,像QQ影音、暴风影音等,都离不开它!否则非常痛苦!为什么呢?

因为又要招一大帮人来把多媒体领域内的基础工具(音视频编解码器、文件格式和协议库、滤镜库等等)实现掉。

3.2. 安装yasm

ffmpeg为了提高编译速度,使用了汇编指令,如果系统中没有yasm指令的话编译会报错

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
sudo make install

3.3. ffmpeg安装

wget http://www.ffmpeg.org/releases/ffmpeg-4.1.tar.gz
tar -zxvf ffmpeg-4.1.tar.gz
# 创建ffmpeg文件夹,指定安装目录
mkdir /opt/ffmpeg
cd /opt/ffmpeg-4.1
./configure --prefix=/usr/local/ffmpeg
make # 这一步很慢,大概5-10分钟,耐心等待
sudo make install

3.4. 配置环境变量

配置环境变量使命令全局生效

vi /etc/profile
# 在最后PATH添加环境变量:
export PATH=$PATH:/opt/ffmpeg/bin
# 保存退出
source /etc/profile
# 将ffmepg的lib目录链接到系统库中
vi /etc/ld.so.conf
# 在文档后追加内容: /opt/ffmpeg/lib/
# 指定ffmpeg的安装目录lib文件夹,添加完后执行ldconfig,使配置生效
ldconfig
# 查看版本,测试是否生效
ffmpeg --version

到此ffmpeg和nginx都已经安装完成了,接下只需要执行ffmepg相关的命令开始推流进行转换操作,之后配和nginx对转换后的流进行访问,就可以在页面上实现实时预览了

4. ffmpeg推流

ffmpeg命令非常多,本次测试也踩了一些坑,最终找到一条可以正常转换,预览的命令;

ffmpeg支持对不同的流转换到不同的流,本次测试对海康威视H.264码流转换成FLV格式的流。需要其它流转换的小伙伴可以去官网或者百度搜索相关的转换命令。

ffmpeg -ss 0:01 -rtsp_transport tcp -i rtsp://user:password@ip:port/h264/ch1/main/av_stream -c copy -f flv rtmp://127.0.0.1:1935/myapp/test1

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现java康威摄像头实时视频保存到指定文件中,需要先安装康威的SDK,并使用Java SDK开发工具包中的类库来开发应用程序。 首先,在应用程序中引入康威的SDK库,包括HCNetSDK.dll、PlayCtrl.dll、HCAlarm.dll等。然后,使用HCNetSDK类库中提供的方法来实现视频实时功能,并将视频通过PlayCtrl.dll中提供的方法进行渲染和显示。 同时,在将视频保存到指定文件时,可以使用Java中的IO进行文件操作。首先在程序中创建File对象指定文件路径,然后使用FileOutputStream类创建输出对象,通过读取视频数据的byte数组并将其写入到输出实现视频保存到文件的功能。 需要注意的是,保存到文件时,时间戳的处理,文件格式等问题都需要按照实际需求进行处理。 总之,要实现java康威摄像头实时视频保存到指定文件中,需要结合使用康威的SDK和Java SDK开发工具包,具体实现过程需要根据实际情况灵活处理。 ### 回答2: Java是一种广泛应用于各种领域的高级编程语言,康威摄像头是一种高清晰度的视频监控设备。如何实现康威摄像头实时视频保存到指定文件中呢?下面以Java编程语言为主体进行分析探讨。 首先,需要了解Java的多媒体相关类库和康威摄像头的API接口。Java多媒体相关类库包括javax.sound.sampled和javax.media包。javax.sound.sampled是Java音频API,可以处理音频文件的读、写、播放和录制等操作;javax.media则是Java多媒体API,可以处理音频、视频和图像等媒体数据。康威摄像头的API接口包括SDK、HCNetSDK和PlayCtrl等。 其次,需要进行康威摄像头实时视频以及保存到指定文件中的操作。具体步骤如下: 1. 初始化康威摄像头SDK,包括设备登录、设备初始化和四个步骤。设备登录是使用设备账号密码进行登录,设备初始化是对设备进行初始化设置,则是打开视频并进行播放。 2. 在中添加截图功能,通过调用SDK中的抓图函数将视频帧数据保存到内存中的一个缓冲区中。抓取一帧数据需要使用NET_DVR_CaptureJPEGPicture_V30函数,并将数据放置到指定的缓存区。 3. 将缓冲区中的数据保存到本地文件中。在Java中可以使用BufferedImage类来保存JPEG图像数据,使用ImageIO类将缓冲区中的图像数据保存到指定的文件中。 4. 关闭设备,退出SDK。 需要注意的是,保存视频到文件中需要根据需求进行设置参数,包括视频的编码格式、分辨率、帧率等。在进行保存时还应该进行异常处理,例如文件不存在、写入失败等异常情况的处理。 总之,Java实现康威摄像头实时视频保存到指定文件中需要进行多项操作,包括康威SDK的初始化和调用、截图和保存等。具体操作可以根据实际需要进行调整和修改,最终实现视频保存到文件的功能。 ### 回答3: java是一种广泛使用的编程语言,可用于开发各种应用程序,包括与摄像头相关的应用程序。康威(Hikvision)是一家专业从事视频监控设备制造的企业,提供多种摄像头系列产品。本文将介绍如何使用java编写程序,实现康威摄像头实时视频,并将视频保存到指定文件中。 首先,要实现康威摄像头实时视频,需要使用其提供的软件开发包(SDK),该SDK提供了一组API,用于控制康威摄像头的各种功能。在使用SDK前,需要先在操作系统中安装相关依赖库,并且在开发环境中配置好SDK相关参数。 接下来,我们需要按照以下步骤编写java程序: 1.引入SDK相关jar包,并创建SDK实例。 import com.sun.jna.NativeLong; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.NativeLongByReference; import com.sun.jna.ptr.PointerByReference; import com.hikvision.netsdk.*; public class HikvisionTest { private HCNetSDK hCNetSDK; public static void main(String[] args) { HikvisionTest test = new HikvisionTest(); test.init(); test.preview(); } public void init() { hCNetSDK = HCNetSDK.INSTANCE; boolean initSuc = hCNetSDK.NET_DVR_Init(); if(!initSuc) { System.out.println("SDK初始化失败"); } } public void preview() { int userId = -1; HCNetSDK.NET_DVR_DEVICEINFO_V30 devInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); NativeLong lRealHandle = new NativeLong(-1); NativeLong lLoginHandle = hCNetSDK.NET_DVR_Login_V30("10.10.10.1", 8000, "admin", "password", devInfo); if(lLoginHandle.longValue() < 0) { System.out.println("登录失败"); return; } HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO(); previewInfo.lChannel = 1; previewInfo.dwStreamType = 0; previewInfo.dwLinkMode = 0x80000000; Pointer hPlayWnd = null;//播放窗口句柄,为null表示不播放画面,只数据 lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(lLoginHandle, previewInfo, null); if(lRealHandle.longValue() < 0) { System.out.println("失败"); return; } //TODO: 在这里添加保存视频到文件的代码 } } 2.登录网络摄像头,并开启实时。 在上述代码中,我们调用了NET_DVR_Login_V30方法登录摄像头设备,该方法返回登录句柄,如果登录失败则返回-1。登录成功后,我们可以通过NET_DVR_RealPlay_V40方法开启实时功能,该方法调用后返回实时句柄,如果开启失败则返回-1。在实时时,我们可以指定播放窗口句柄,如果传入null则表示只不播放。 3.将视频保存到指定文件中。 要将视频保存到指定文件中,我们可以在时添加代码,调用NET_DVR_SaveRealData保存视频数据。 hCNetSDK.NET_DVR_SaveRealData(lRealHandle, "D:\\video\\test.mp4"); 以上代码将把视频数据保存到指定文件路径(D:\\video\\test.mp4)中。 另外,为了保证视频数据正常保存,还需要添加停止和注销登录相关的代码。停止时,可以调用NET_DVR_StopRealPlay方法停止实时;注销登录时,可以调用NET_DVR_Logout方法注销登录句柄。 总之,使用java编写程序实现康威摄像头实时视频并保存视频到指定文件,需要使用康威摄像头SDK提供的API来控制摄像头功能,同时需要注意代码的执行顺序和各种参数的设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值