I would like to insert a text in a video dynamically. When I run the code below it displays a window with the text inside the video, but the .mp4 output generated file is empty (0kb)
EDIT: problem persists after right indentation
path = r'C:\\Users\\semnome\\Desktop\\automatizacoes\\m\\'
video_file = 'a.mp4'
x = True
cap = cv.VideoCapture(video_file) #cap for "Video Capture Object"
fourcc = cv.VideoWriter_fourcc(*'mp4v')
out = cv.VideoWriter('outpu2t.mp4', fourcc, 20.0, (640,480))
try:
while(True):
# Capture frames in the video
ret, frame = cap.read()
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(frame,
'TEXT ON VIDEO',
(50, 50),
font, 1,
(0, 640, 480),
2,
cv.LINE_4)
out.write(frame)
cv.imshow('video', frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv.destroyAllWindows()
except:
print("Video has ended.")
cap.release()
cv.destroyAllWindows()
CodePudding user response:
this is simply an indentation error. (and it's got nothing to do with writing text !)
you want out.write(frame)
inside the loop, not after it (currently it only writes a single frame)