@kilrea

Как в opencv задать битрейт?

Я склеиваю несколько видеозаписей с помощью 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 сразу указать битрейт?
  • Вопрос задан
  • 630 просмотров
Решения вопроса 1
@kilrea Автор вопроса
Я поменял кодек на *'DIVX' и выходной файл стал нормального размера. Вопрос решен
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы