前回に引き続き「それ、pythonでできるよ」シリーズ
pythonには様々なライブラリが開発されており、あらゆることが手軽にできます。
今記事は簡単なことはpythonでやってしまおう!!という精神の記事です。
今回は「python動画編集」シリーズその3
動画の編集ソフトは有料ソフトから無料ソフトまでたくさんあり、無料でも高性能なソフトはありますが、
環境構築やストレージの問題などお手軽ではないかもしれません。
その中で、動画編集で頻繁に使われる、動画の字幕の追加をpythonで行います。
いつも通りMoviepyを使いますが、
その前に・・・まず、ImgeMagickというソフトウェアをインストールしましょう。
インストール方法は上記のホームページからOSに合わせてダウンロードしてインストールするだけです。
ImageMagickとは?という人はこちらを参考にしてください。
要は画像加工のソフトウェアで、この界隈では必須知識だそうです。
後は以下のコードをコピペ。
from moviepy import editor
from moviepy.video.io.VideoFileClip import VideoFileClip
import os.path as op
"""以下2行はwindowsユーザは書かないとおそらくエラーが出ます"""
from moviepy.config import change_settings
change_settings({"IMAGEMAGICK_BINARY": r"C:\\Program Files\\ImageMagick-7.0.8-Q16\\magick.exe"})
file_path = "movie.mp4"#字幕を付けたい動画のパス
"""字幕の設定関数"""
def annotate(clip, txt, txt_color='red', fontsize=50, font='Xolonium-Bold'):
#Writes a text at the bottom of the clip.
txtclip = editor.TextClip(txt, fontsize=fontsize, font=font, color=txt_color)
cvc = editor.CompositeVideoClip([clip, txtclip.set_pos(('center', 'bottom'))])
return cvc.set_duration(clip.duration)
video = VideoFileClip(file_path)
#subs・・・字幕を入れる時刻と文字列のタプル。(開始時刻,終了時刻),'表示したい文字'
subs = [((0, 4), 'subs1'),
((4, 9), 'subs2'),
((9, 12), 'subs3'),
((12, 16), 'subs4')]#動画の長さまで字幕を設定する。途中で切られる。表示したくないときは空文字''で
annotated_clips = [annotate(video.subclip(from_t, to_t), txt) for (from_t, to_t), txt in subs]#動画と字幕を繋げる処理
final_clip = editor.concatenate_videoclips(annotated_clips)
final_clip.write_videofile("movie_withSubtitle.mp4")
少しだけ解説しますと
annotate()で字幕のフォントや色、サイズを設定しています。
字幕の位置は(txtclip.set_pos((‘center’, ‘bottom’)))で指定しています。
注意点としてはsubsの時刻指定は連続して最後まで行う必要があります。
今回の場合だと16秒で動画が切られてしまいます。
(字幕を入れたくない場合は空文字で指定しましょう)
後、windowsユーザの方が必要な2行ですが、パスをしっかり合わせてください。
これで、動画の好きな時刻に好きな字幕を入れることができます。
僕はwindowsだったのですが、エラーがなかなか解決できず...
皆さんもぜひ試してみてください。
合わせて読みたいpythonの記事はコチラ!!
Pingback: pythonで動画を切り出す「それ、pythonでできるよ」
フォントを変更しても日本語が字幕に表示されません!!!