Я склеиваю несколько видеозаписей с помощью opencv. Все получается нормально, но размер выходного файла - 300-400 мб, а общий размер входных файлов - не более 30 мб. Я посмотрел метаданные выходного видео, битрейт 30000 кб/сек. Можно изменить битрейт с помощью ffmpeg:
ffmpeg -i end.mp4 -b:v 500k -b:a 500k output_video.mp4
но хотелось бы сразу записывать файл с нужным битрейтом во время склейки. Код для склейки:
video_index = 0
cap = VideoCapture(videofiles[0])
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('result.avi', fourcc, fps, (w,h))
while(cap.isOpened()):
ret, frame = cap.read()
if frame is None:
print ('Обработали видео', videofiles[video_index])
video_index += 1
if video_index >= len(videofiles):
break
cap = VideoCapture(videofiles[ video_index ])
ret, frame = cap.read()
out.write(frame)
if waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
destroyAllWindows()
Можно ли в opencv VideoWriter сразу указать битрейт?