VideoWriter нечитаемый вывод с использованием временного файла - PullRequest
2 голосов
/ 28 марта 2020

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

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

Код, который работал правильно:

video = cv2.VideoWriter('/path/to/test_output.mp4',cv2.VideoWriter_fourcc(*'avc1'),20,(width,height))

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

Код, который создал нечитаемый вывод 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')

1 Ответ

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

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

video.release()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...