前提・実現したいこと
連番BMPをPythonのOpenCVを使用し、非圧縮AVIを出力するツールを作成しております。
出力された動画は、Adobe After Effectsに読込める必要があります。
該当のソースコード
python3
1 2#!/usr/bin/env python 3# -*- coding: utf-8 -*- 4import glob 5import cv2 6import numpy as np 7 8path = "test\*.bmp" 9files = glob.glob(path) 10 11fourcc = cv2.VideoWriter_fourcc("D","I","B"," ") 12video = cv2.VideoWriter("test.avi", fourcc, 30.00, (640,480), True) 13 14for img_file in files : 15 img = cv2.imread(img_file,cv2.IMREAD_UNCHANGED) 16 video.write(img) 17 18video.release() 19
発生している問題・エラーメッセージ
上記のコードを実行すると動画は出力されますが、サイズは0です。
また、下記のエラーメッセージが表示されます。
OpenCV: FFMPEG: tag 0x20424944/'DIB ' is not found (format 'avi / AVI (Audio Video Interleaved)')'
MJPGなどコーデックを指定し出力した動画は、プレーヤーでの再生やAfter Effectsの読込みはできます。
試したこと 1
video = cv2.VideoWriter("test.avi", fourcc, 30.00, (640,480), True) を
video = cv2.VideoWriter("test.avi", 0, 30.00, (640,480), True) に書き換えて実行。
データサイズのある動画が出力され、プレーヤーでの再生は可能でした。
ただ、After Effectsに読込むと、正常に再生できませんでした(真っ黒または、2フレームほどバッグっている絵になる)。
試したこと 2
cv2.VideoWriter_fourcc("D","I","B"," ") を cv2.VideoWriter_fourcc("R","A","W"," ") に書き換えて実行。
下記のエラーメッセージが表示されます。
OpenCV: FFMPEG: tag 0x20574152/'RAW ' is not supported with codec id 13 and format 'avi / AVI (Audio Video Interleaved)' [avi @ 000002dac7fa2cc0] yuv420p rawvideo cannot be written to avi, output file will be unreadable
データサイズのある動画が出力されますが、プレイヤーやAdobe After Effectsに読込んでも、再生できませんでした。
試したこと 3
Adobe After Effects で連番BMPを非圧縮AVIとして出力した動画のfourccを確認しました。
python3
1import struct 2import cv2 3 4inputVideo = cv2.VideoCapture("AE_test.avi") 5fourcc = int(inputVideo.get(6)) 6print (fourcc) 7print (struct.pack("<I", fourcc)) 8 9# 出力結果 10# 1987535218 11# b'rawv'
cv2.VideoWriter_fourcc("D","I","B"," ") を
上記の出力結果の値を代入し、cv2.VideoWriter_fourcc("R","A","W","V") に書き換えて実行。
下記のエラーメッセージが表示されます。
OpenCV: FFMPEG: tag 0x20424944/'RAWV' is not found (format 'avi / AVI (Audio Video Interleaved)')'
補足情報
windows 10
python 3.7
openCV 4.1.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/18 13:07
2019/10/23 00:29