walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

Google Colaboratory 上の cv2 で作成した動画を表示する

思いの外詰まった&パッとドキュメントが見当たらなかったのでメモ。

まず動画ファイルを作ります。

import cv2

fourcc = cv2.VideoWriter_fourcc(*'MP4V')
writer = cv2.VideoWriter('./out.mp4', fourcc, 60, (80, 80))

for frame in frames:
    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
    recorder.write(frame)

recorder.release()

こうやって作成された mp4 拡張子のファイルは、まず Chrome で再生できません。

Python OpenCV video format play in browser - Stack Overflow

じゃあ *'H264 ' に変更すれば良いかというと、そう単純に動いてはくれませんでした。そこで、colab はデフォルトで ffmpeg までインストールされてるのでありがたく使わせてもらい、力技で以下のようにします。

!ffmpeg -i ./out.mp4 -vcodec vp9 ./out.webm

from IPython.display import HTML
import base64
import io

def play(file_path):
    video = io.open(file_path, 'r+b').read()
    encoded = base64.b64encode(video)
    return(HTML(data='''<video width="320" height="240" controls><source src="data:video/mp4;base64,{0}" type="video/mp4" /></video>'''.format(encoded.decode('ascii'))))

play('./out.webm')

Defining a function to call a video within Jupyter Notebook - Stack Overflow

ひとまずこれで cv2 で作成した動画が表示できたので、良しとします。