Я занимаюсь обработкой видео и столкнулся с проблемой конвертации формата avi в mkv. Для решения этой проблемы использовал библиотеку opencv, но не один кодек не смог записать видео в mkv формате.
fourcc = cv2.VideoWriter_fourcc(*'DIB ')
out = cv2.VideoWriter('output.mkv', fourcc, 20.0, (frames[0].shape[1], frames[0].shape[0]))
for frame in frames:
out.write(frame)
out.release()
Один из вариантов записи в mkv
После этого я нашел библиотеку ffmpy она может конвертировать из любого формата в любой. Я решил, что результат своей обработки я буду сохранять в avi формат, а потом конвертировать в mkv при помощи такого кода
def convertVideo():
ff = ffmpy.FFmpeg(
inputs={'output.avi': None},
outputs={'output.mkv': None}
)
ff.run()
Данный фрагмент действительно конвертирует avi в mkv, но если avi файл создан при помощи opencv, то конвертация не проходит.
Как записать файл в mkv формат на виндоус при помощи opencv и python?
Как при помощи ffmpy конвертировать файл полученный opencv в формате avi в формат mkv?
Ответ
Решение было очень просто нужно было использовать кодек MJPG типа.
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.mkv', fourcc, 20.0, (frames[0].shape[1], frames[0].shape[0]))
for frame in frames:
out.write(frame)
out.release()
Данный код позволяет записывать файлы в mkv формате.
Комментариев нет:
Отправить комментарий