car-eye 在GT1078 视频服务器开发中曾经搭建FTP服务器来实现视频文件下载功能。在GT1078 协议里,是通过FTP服务上传视频文件到FTP服务器,然后客户端从FTP服务器下载视频文件,这是标准的官方给出的下载实现方式。但是很遗憾的是,这种实现方式是有缺陷的–与设备厂家实现脱离了。我们在客户端的播放器一般都支持MP4的文件格式,里面的音视频格式一般是AAC和H264这种格式。但设备端的录像文件,各种各样,甚至有的厂家直接存储的bin文件。这直接导致了FTP上传的文件在客户端无法播放
为止,分段下载,平台录制的方式成为了选择。也就是说,采用视频回放的方式,将视频流发送到平台,然后在平台录制成一种通用的音视频文件格式,比如MP4,成为了选择。GB28181协议的实现者就是采用了视频流上传的方式要求平台或者客户端具有录制文件的功能。
具体的流程如下
1. 发送上传历史文件视频流的命令给设备
2. 通知视频服务器需要对指定设备流完成录制
3. 录制完成后将视频文件保存在http文件服务器(可以通过nginx来进行管理)
4. 录制完成后将,录制的文件名,服务器的ip,端口等信息发送给客户端或者管理平台。
5. 客户端下载视频文件到本地。
这样一个远程下载视频文件流程完成。
以上录制文件的库我们采用开源库ireader完成录制工作。相关的网址是:https://github.com/ireader/media-server
使用到里面libmov工程。
在nginx上配置文件服务器的代码:
server {
listen 9000; #端口
server_name localhost; #服务名
charset utf-8; # 避免中文乱码
root E:download; #显示的根索引目录,注意这里要改成你自己的,目录要存在
location / {
autoindex on; #开启索引功能
autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes)
autoindex_localtime on; # 显示本机时间而非 GMT 时间
}
}
文件上传结束时需要注意:
1. GB28181项目里,文件正常上传结束时候会收到message。可以在消息处理将文件录制的信息通过MQ发送给平台
在GT1078视频项目里,会收到视频流上传完成的消息。需要平台主动从视频服务器获取相关的录制文件信息
2. 在设备下线的时候,心跳没了。这时候如果是在录制状态,也需要将相关制好的文件信息上传到管理平台。
有关car-eye 国标28181平台的开源信息和GT1078服务器相关的资料可以从car-eye开源网址下载:https://github.com/Car-eye-team/
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
假设有以下两个实体: public class Student { public int StuID { get; set; } public string? Name { get; set; } public IEnumerable? Homeworks {…