Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从网络摄像头修剪(删除)实时视频_Python_Ffmpeg_Video Streaming_Video Processing_Video Capture - Fatal编程技术网

使用python从网络摄像头修剪(删除)实时视频

使用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

我有一个摄像头,可以捕捉视频流。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(
    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代码中工作的新问题。