Opencv VideoWriter tempfile - PullRequest
       11

Opencv VideoWriter tempfile

0 голосов
/ 25 марта 2020

Я пытаюсь записать список изображений в видео mp4. Когда я использую VideoWriter для локального пути к файлу mp4, этот код работает отлично, и мой файл mp4 сохраняется на диск.

Однако мне нужно выполнить эту операцию на сервере, используя временный файл, чтобы затем отправить его в другие места. Чтобы протестировать использование временного файла, я просто изменяю имя файла VideoWriter на file_out.name (через NamedTeilitaryFile) и копирую на диск, чтобы убедиться, что оно работает правильно. Вывод, который я получаю, - это файл mp4 одинакового размера, но он не может быть открыт ни одним видеопроигрывателем - поэтому с файлом должно быть что-то не так.

file_out = tempfile.NamedTemporaryFile(suffix='.mp4')

video = cv2.VideoWriter(file_out.name,cv2.VideoWriter_fourcc(*'avc1'),20,(width,height))

for i in range(len(images)):
    video.write(np.asarray(images[i]))

shutil.copy(file_out.name, '/path/to/test_output.mp4')

Что может происходить, чтобы VideoWriter не не могу правильно написать в мой временный файл?

PS Моя первая попытка была записать VideoWriter в BytesIO для последующей отправки напрямую через http - это не сработало, поэтому я вернулся к временному файлу.

1 Ответ

0 голосов
/ 27 марта 2020

решено:

Вывод VideoWriter ДОЛЖЕН быть разрешен, чтобы вывод скопированного файла был действительным.

video.release()

Это устраняет проблему.

...