[英]Trim (remove frames from) live video from webcam using python
我有一個捕獲視頻流的網絡攝像頭。 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 input -f segment -segment_time 30 -segment_wrap 2 -reset_timestamps 1 output_%d.avi
這將創建兩個文件: output_0.avi
和output_1.avi
。 每 30 秒,輸出將在這些文件之間交替並覆蓋早期版本。
您可以使用-segment_wrap 1
並僅輸出 1 個文件,但您可能會丟失視頻。 例如,在 32 秒停止錄制將使您獲得 2 秒的視頻,而不是 30 秒的視頻 + 2 秒的視頻。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.