国标平台视频录像内存数据存储开发方案

1. 数据建模
1.1 Redis 数据结构
Redis 中的哈希表存储了每条记录的详细信息,字段名是时间戳(如 20250405084325),值是 JSON 格式的字符串。

时间戳(如 20250405084325),值是 JSON 格式的字符串。
以下是 Redis 数据的建模:

键名:

    cloudrecord:<serial>_<code>
                <serial>:设备序列号。
                <code>:设备代码。

字段名:
  时间戳(格式为 YYYYMMDDHHMMSS)
值:
  JSON 数据对象,包含以下字段:
    Json
    {
      "ID": "34020000001320000007_34020000001320000007",
      "Name": "34020000001320000007_34020000001320000007",
      "Day": "20250405",
      "StartTime": "20250405084325",
      "SMS": "34020000002020000001",
      "Host": "10.27.243.174",
      "WanIP": "59.110.70.175",
      "HTTPPort": 10001,
      "HTTPSPort": 0,
      "Duration": 47.739,
      "Important": false,
      "Hevc": false,
      "M3u8URL": "http://59.110.70.175:10001/record/..."
    }


1.2 视频片段文件结构
   视频片段文件通过 M3u8URL 地址下载,存储在本地临时目录中。文件名格式如下:
   <temp_dir>/segment_<index>.ts
   最终合并的视频文件存储在指定输出目录:
   <output_dir>/<serial>_<period>.mp4
   
   
2. 数据流设计
 2.1 数据输入

  API 请求参数:
           serial:设备序列号。
          code:设备代码。
          period:日期(格式为 YYYYMMDD)。

Redis 查询:
    根据 serial 和 code 构造 Redis 键名。
    使用 HSCAN 命令扫描符合日期条件的字段。
    2.2 数据处理
    解析 JSON 数据:
    将 Redis 返回的 JSON 字符串解析为结构体。
    提取关键字段(如 StartTime、Duration、M3u8URL 等)
    
下载视频片段:
    遍历记录列表,每个 M3u8URL 对应的视频片段。
    将片段保存到临时目录。

合并视频片段:
     合并片段为完整的 MP4 文件。
    
2.3 数据输出
  生成的视频文件: 存储路径:<output_dir>/<serial>_<period>.mp4。
    提供下载链接或直接返回文件内容。
       
3. 数据存储
3.1 Redis 数据存储
  存储方式:每条记录存储为 Redis 哈希表的一个字段。
  字段名为时间戳 (格式为 YYYYMMDDHHMMSS),
  值为 JSON 数据,包含以下字段:
    Json
    {
      "ID": "34020000001320000007_34020000001320000007",
      "Name": "34020000001320000007_34020000001320000007",
      "Day": "20250405",
      "StartTime": "20250405084325",
      "SMS": "34020000002020000001",
      "Host": "10.27.243.174",
      "WanIP": "59.110.70.175",
      "HTTPPort": 10001,
      "HTTPSPort": 0,
      "Duration": 47.739,
      "Important": false,
      "Hevc": false,
      "M3u8URL": "http://59.110.70.175:10001/record/..."
    }
    


Redis 配置

bind 127.0.0.1
protected-mode yes
port 26379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_26379.pid
loglevel notice
logfile "redis.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
replica-priority 100
requirepass livegbs@2019
maxclients 10000
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值