#视频流 #视频 #RTSP #录制器 #网络 #NVR #编码

bin+lib simple-network-video-recorder

一个简单的(NVR)程序,可以捕获视频流并保存为mp4文件,而不会填满整个磁盘!

3 个版本

0.1.2 2024年4月10日
0.1.1 2024年4月6日
0.1.0 2024年4月1日

#63 in 多媒体

Apache-2.0

15KB
228

simple-network-video-recorder

一个简单的网络视频录制器(NVR),您可以使用它将视频流捕获为mp4文件,而不会完全填满您的磁盘!

功能

它执行两个功能

  1. 将RTSP流的 内容保存为固定持续时间的视频段(mp4)(这使用FFmpeg),并且;
  2. 视频段的总大小永远不会超过一个阈值:删除最旧的视频段来为新段腾出空间。

安装

在继续之前,请花些时间阅读 LICENSE 协议。

警告! 目前,您必须 自行编译二进制文件,因为您需要首先设置一些环境变量。我计划在未来通过引入CLI来修复这个问题。

安装步骤

  1. 您必须在您的系统上已经安装了 rustffmpeg。请参阅 rust-lang.orgffmpeg.org 了解如何满足此要求;

  2. 使用 git clone https://github.com/dancavolix/simple-network-video-recorder.git 克隆此仓库

  3. 切换到项目 根目录 cd simple-network-video-recorder;

  4. 使用 cargo build --release 在本地构建项目。

设置

根目录 内,运行 cp .env.example .env 复制配置文件。在运行应用程序之前,您首先需要在 .env 文件中设置值。以下是每个值的简要说明

  • URI: 流URI,类似于 rtsp://username:[email protected]/cam/example;
  • SOURCE_ID:用于更好地识别你的文件(如果有多个流)。请避免使用空格和特殊字符;
  • SAVE_DIR:片段将被存储到该目录中的文件,例如,SAVE_DIR=/home/user/my-videos
  • SEGMENT_DURATION:片段的时长(以秒为单位),例如,设置 3600 以创建一个小时的片段;
  • STORAGE_CAPACITY:片段总共应该占用多少磁盘空间,例如,设置 128000000000(九个零)以创建128GB的空间。

警告! SEGMENT_DURATIONSTORAGE_CAPACITY 的值设置非常重要。你必须进行自己的实验,找到最适合你的需求,但请注意默认设置(一小时长度的片段和128GB的存储大小将足够,只要你磁盘上有这么多的空闲空间)。

开始录制

只需运行 cargo run --release

无运行时依赖