|
6 dní pred | |
---|---|---|
build | 6 dní pred | |
include | 6 dní pred | |
src | 6 dní pred | |
.dockerignore | 6 dní pred | |
API_DOCUMENTATION.md | 6 dní pred | |
CMakeLists.txt | 6 dní pred | |
CMakePresets.json | 3 týždňov pred | |
DOCKER_FILES_README.md | 6 dní pred | |
DOCKER_README.md | 6 dní pred | |
Dockerfile | 6 dní pred | |
Dockerfile.old | 6 dní pred | |
FEATURES_SUMMARY.md | 6 dní pred | |
HTTP_API_DOC.md | 1 týždeň pred | |
README.md | 1 týždeň pred | |
VIDEO_PLAYER_GUIDE.md | 1 týždeň pred | |
autocmak.py | 3 týždňov pred | |
config.json | 6 dní pred | |
docker-compose.yml | 6 dní pred | |
docker-network-test.sh | 6 dní pred | |
docker-start.sh | 6 dní pred | |
docker-stop.sh | 6 dní pred | |
http_server_main.cpp | 1 týždeň pred | |
main.cpp | 6 dní pred | |
network-test.sh | 6 dní pred | |
quick-rtsp-test.sh | 6 dní pred | |
rtsp-debug.sh | 6 dní pred | |
test_http_api.sh | 1 týždeň pred | |
test_report.sh | 3 týždňov pred | |
test_report_generation.cpp | 3 týždňov pred | |
video_manager.html | 6 dní pred | |
video_test.html | 6 dní pred |
本项目提供了一套完整的RTSP视频流拉取和管理解决方案,包括:
cd /Users/wenhongquan/CLionProjects/jtjai_media
# 编译RTSP拉取程序
cmake --build cmake-build-debug --target jtjai_media
# 编译HTTP服务器
cmake --build cmake-build-debug --target jtjai_http_server
# 使用默认配置文件
./cmake-build-debug/jtjai_media
# 或指定配置文件
./cmake-build-debug/jtjai_media /path/to/config.json
输出目录结构:
output/
├── 20251010_160000/ # 第1轮拉取(时间戳命名)
│ ├── test_stream1.mp4
│ ├── test_stream2.mp4
│ ├── rtsp_report.json
│ ├── report.txt
│ └── streams.csv
├── 20251010_170000/ # 第2轮拉取
│ ├── test_stream1.mp4
│ ├── test_stream2.mp4
│ ├── rtsp_report.json
│ ├── report.txt
│ └── streams.csv
└── ...
# 使用默认参数(目录:./output,端口:8080)
./cmake-build-debug/jtjai_http_server
# 指定输出目录
./cmake-build-debug/jtjai_http_server ./output
# 指定输出目录和端口
./cmake-build-debug/jtjai_http_server ./output 8080
服务器启动后会显示:
========================================
RTSP视频流管理HTTP服务器
========================================
输出目录: ./output
监听端口: 8080
HTTP服务器已启动,监听端口: 8080
API端点:
GET /api/videos - 列出所有视频
GET /api/timestamps - 列出所有时间戳目录
GET /api/videos/{timestamp} - 列出指定时间戳目录的视频
DELETE /api/video?path={path} - 删除指定视频文件
DELETE /api/timestamp/{timestamp} - 删除指定时间戳目录及其所有文件
HTTP服务器已启动,按 Ctrl+C 停止服务器
video_manager.html
文件http://localhost:8080
并加载数据主要功能:
详细的API文档请参考:HTTP_API_DOC.md
curl http://localhost:8080/api/timestamps
curl http://localhost:8080/api/videos
curl http://localhost:8080/api/videos/20251010_160000
curl -X DELETE "http://localhost:8080/api/video?path=./output/20251010_160000/test_stream1.mp4"
curl -X DELETE http://localhost:8080/api/timestamp/20251010_160000
./test_http_api.sh
该脚本会自动测试所有API端点并显示结果。
RTSP拉取程序使用JSON配置文件(默认:config.json
):
{
"global_config": {
"total_poll_duration_seconds": 60, // 每轮总时长
"max_concurrent_streams": 2, // 最大并发数
"output_directory": "./output", // 基础输出目录
"report_filename": "rtsp_report.json",
"connection_timeout_seconds": 3,
"read_timeout_seconds": 5,
"poll_cycles": 3, // 轮询次数(-1为无限)
"cycle_interval_seconds": 30 // 轮询间隔
},
"streams": [
{
"rtsp_url": "rtsp://...",
"duration_seconds": 15,
"weight": 1.0,
"output_filename": "test_stream1.mp4"
}
]
}
jtjai_media/
├── include/
│ ├── config.h # 配置管理
│ ├── rtsp_client.h # RTSP客户端
│ ├── scheduler.h # 任务调度器
│ ├── reporter.h # 报告生成器
│ ├── concurrent_calculator.h # 并发计算器
│ └── http_server.h # HTTP服务器
├── src/
│ ├── config.cpp
│ ├── rtsp_client.cpp
│ ├── scheduler.cpp
│ ├── reporter.cpp
│ ├── concurrent_calculator.cpp
│ └── http_server.cpp
├── main.cpp # RTSP拉取主程序
├── http_server_main.cpp # HTTP服务器主程序
├── video_manager.html # Web管理界面
├── config.json # 配置文件
├── HTTP_API_DOC.md # API文档
├── test_http_api.sh # API测试脚本
└── README.md # 本文件
拉取视频流
jtjai_media
程序管理视频文件
jtjai_http_server
服务器监控和维护
A: 启动时指定端口参数:./jtjai_http_server ./output 9090
A: 时间戳目录名包含日期时间(YYYYMMDD_HHMMSS),可以通过API按时间戳查询
A: 不可以,删除操作是永久的,请谨慎操作
A: 可以使用API遍历时间戳目录,删除指定日期之前的目录