使用python从网络摄像头修剪(删除)实时视频
我有一个摄像头,可以捕捉视频流。30秒后,我想从一开始就删除1秒的视频,并继续捕获视频流,以此类推。简而言之,我只想保存最新30秒的现场视频 OpenCV不提供视频处理 ffmpeg会修剪视频,但会创建一个新的输出文件,我不想保留副本使用python从网络摄像头修剪(删除)实时视频,python,ffmpeg,video-streaming,video-processing,video-capture,Python,Ffmpeg,Video Streaming,Video Processing,Video Capture,我有一个摄像头,可以捕捉视频流。30秒后,我想从一开始就删除1秒的视频,并继续捕获视频流,以此类推。简而言之,我只想保存最新30秒的现场视频 OpenCV不提供视频处理 ffmpeg会修剪视频,但会创建一个新的输出文件,我不想保留副本 #Create a video write before entering the loop #Create a video write before entering the loop video_writer = cv2.VideoWriter( vi
#Create a video write before entering the loop
#Create a video write before entering the loop
video_writer = cv2.VideoWriter(
video_file, video_codec, fps, (int(cap.get(3)), int(cap.get(4)))
)
#video_file is the file being saved
start = time.time()
i=0
seconds='1'
while cap.isOpened():
ret, frame = cap.read()
if ret == True:
cv2.imshow("frame", frame)
if time.time() - start > 10:
print('video > 10 sec')
subprocess.call(['ffmpeg', '-i', video_file, '-ss', seconds, 'output.avi'])
break
# Write the frame to the current video writer
video_writer.write(frame)
if i%24 == 0:
cv2.imwrite('image'+str(i)+'.jpg',frame)
i+=1
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()
我想知道的是,我们如何在直播视频中进行切换,并不断保存未来的帧,以便视频不会超过30秒,并保留最新的帧。您可以使用:
ffmpeg-i输入-f段-段时间30-段时间包裹2-重置时间戳1输出%d.avi
这将创建两个文件:output_0.avi
和output_1.avi
。每隔30秒,输出将在这些文件之间交替,并覆盖早期版本
您可以使用
-segment\u wrap 1
只输出1个文件,但您可能会丢失视频。例如,如果在32秒停止录制,您将获得2秒的视频,而不是30秒的视频+2秒的视频。您能否更改上述程序,我无法使用段获取输出muxer@MuhammadUsman我只能提供ffmpeg命令。我不使用python。问题在于ffmpeg的使用,而不是在python中的实现。您可以提出一个关于如何使命令在python代码中工作的新问题。