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,