关于一个摄像头的需求,求大佬指点

68 天前
 V392920

现在有这样一个需求,需要开发一个程序,写一个接口,当接口接收到请求,就需要获取摄像头当前时间-5 到+5 秒的视频

举例说明: 比如在 10:00:00 接口接收到请求,那就需要将摄像头 9:59:55~10:00:05 这 10 秒的视频保存到指定目录并推送至指定地方,并且需要在 30 秒内完成该逻辑

设备是海康威视摄像头

我尝试过的方法

1 、通过海康的 RTSP 流添加 starttime 和 endtime 来获取回放流,比如我 10:00:00 收到请求,我就拼接 rtsp 流地址 rtsp://admin:xxx@192.168.1.33:554/Streaming/101?starttime=20240712T095955Z,然后使用 ffmpeg 进行录制 10 秒,就能刚刚好保存出这个时间段的视频

发现的问题: 不知道是什么原因,我只要获取当前时间的 rtsp 流,就无法访问,经过写代码尝试,发现必须获取当前时间 2 分钟前的流,才可以访问,比如 10:00:00 接到请求,只能访问到 9:58:00 左右的回放流,我猜测是因为录像没有实时落盘的原因?

2 、集成海康 SDK 尝试,也遇到了跟 1 操作一样的问题,就是没办法实时或者说获取 10 秒内的回放,获取 1 分钟之前的回放文件可以成功,比 rtsp 稍微好一点,但是也不能满足我的需求,我在看海康文档的时候,有个刷新索引的接口,写的是设备默认 2 分钟刷新,但是我尝试了,我的摄像头提示不支持该接口

我通过官方的 App 海康互联测试,他们 App 的回放功能好像就没这么大的差距,他们的 App 能回放 30 秒内的视频

希望求大佬指点,或者有没有其他办法能实现这个需求,万分感谢

2203 次点击
所在节点    程序员
23 条回复
zhy321
67 天前
最后怎么实现的
zreyu
67 天前
from flask import Flask, request
import cv2
import datetime
import subprocess
import time

app = Flask(__name__)

@app.route('/capture_video', methods=['POST'])
def capture_video():
try:
# 获取当前时间
current_time = datetime.datetime.now()
start_time = (current_time - datetime.timedelta(seconds=5)).strftime('%H:%M:%S')
end_time = (current_time + datetime.timedelta(seconds=5)).strftime('%H:%M:%S')

# 摄像头 ID ,假设使用默认摄像头
camera_id = 0

# 保存视频的路径
output_path = 'captured_video.mp4'

# 使用 FFmpeg 捕获视频
ffmpeg_cmd = f'ffmpeg -y -ss {start_time} -t 10 -i /dev/video{camera_id} {output_path}'
subprocess.run(ffmpeg_cmd, shell=True, check=True)

# 推送视频到指定地方(这里假设推送到某个 URL )
push_url = 'http://example.com/upload'
push_cmd = f'curl -F "file=@{output_path}" {push_url}'
subprocess.run(push_cmd, shell=True, check=True)

return {'status': 'success', 'message': 'Video captured and pushed successfully'}
except Exception as e:
return {'status': 'error', 'message': str(e)}

if __name__ == '__main__':
app.run(debug=True)
liuxh7
63 天前
老哥,我现在做的摄像头有个优化需求也是类似的问题,想找老哥聊下,方便加下小而美吗? aGFsbG9feGlhb2hlaQ==

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1056852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX