I am Charmie

メモとログ

MoviePyで動画を出力できない問題

MoviePyで動画(mp4ファイル)と音声(mp3ファイル)を結合して保存しようとしたらエラーを吐くようになった.
原因をIssueに上げてみたが,Issueの書き方が良くないから対応してもらえないかも.対処方法を教えてもらえた.

以下の通り,moviepyのバージョンを上げればOK. もともと1.0.3だったのが2.0.0.dev2になって,ちゃんと動画を保存できるようになった.

pip install -e git+https://github.com/Zulko/moviepy.git#egg=moviepy

以下,対処方法を教わる前の汚い解決策.

以下のようにfpsが設定されていないというエラーメッセージが出たものの,fpsを明示的に指定しても同じエラーメッセージが表示される.

  File "/opt/anaconda/anaconda3/lib/python3.6/site-packages/moviepy/video/io/ffmpeg_writer.py", line 88, in __init__
    '-r', '%.02f' % fps,
TypeError: must be real number, not NoneType

デバッグした結果,write_videofileのdecoratorに設定されているuse_clip_fps_by_defaultという関数が原因ということが分かった. どこがマズいのかイマイチ分からなかったけど,指定したfpsが削除されてしまうから,write_videofileにfpsを指定してもエラーが出てしまう.

対処方法としては,以下のようにdecoratorをコメントアウトするという微妙な方法を採用した. ひょっとしたらPythonのバージョンが古い(3.6)ことが原因なのかもしれないけど,対応してくれるとうれしいな.

    @requires_duration
    # @use_clip_fps_by_default
    @convert_masks_to_RGB
    def write_videofile(self, filename, fps=None, codec=None,