・PythonのライブラリMoviePyの参考になるコードをさがしている
・Pythonのフリーランスの仕事がどんなものがあるのか知りたい方
・実際フリーランスの依頼された仕事が、どれくらいの時間がかかるのか知りたい方
・ど
どうもこんには。
今日もフリーランスの仕事紹介サイトに掲載してある、Pythonを使った仕事を行いたいと思います。
行うといっても
実際に契約しておらず、依頼内容を推察して行っているので
完全に趣味です!!!(笑)
今回のお題はこちら
【案件】
動画への自動テロップ挿入(Python, ライブラリ:MoviePy使用)
【報酬】
3千円
報酬がとても安い(笑)
というのも
紹介文でも、初めての案件にどうぞ的な内容もあったり、ライブラリも指定して
だいたいのあたりをつけての依頼だからかもしれません。
とりあえずやってみましょう!!
作業
動画の選定
video-ACさんの動画を使用します!
なんでもいいんですけど、男性の細マッチョっぷりが印象的でしたので
この動画にしました(笑)
MoviePyとは
そもそもMoviePyってなんだ?ってところから始まりました(笑)
OpenCV, TensorFlow みたいなライブラリは色々な人が使っている人気ライブラリなのでよく知っていいるのですが
Pythonを6年使っていて、MoviePyは初めて聞いたライブラリなので調べてみました。
MoviePyは、ビデオ編集用のPythonモジュールであり、基本的な操作(カット、連結、タイトルの挿入など)、合成、出力処理、またはレベルの高いエフェクトの作成に使用できます。GIFを含む一般的なビデオ形式の読み取りと書き込みができます。
https://zulko.github.io/moviepy/index.html よりコン翻訳
らしいです。
いつも私はiMovieで動画編集していたのですが
仕事で、決まりきった編集をする人にとっては
Pythonで自動的に決まりきった秒数に、このテロップを載せる!!みたいに決まったこともあると思うので
文字で編集内容を指定可能なのはいいですね。
Pythonコードを書く
上のサンプル動画を読み込んで
10秒後に3秒間「to be continued…」という文字を動画に表示させてみます。
from moviepy.editor import *
#動画の0秒から16秒を抜き取る
clip = VideoFileClip("sample.mov").subclip(0,16)
# 入れる文字を決定する
txt_clip = TextClip("To be continued...",fontsize=70,color='white')
# 10秒後表示させるテキスト duration:表示する秒数、start:何秒後にスタートさせるか
txt_clip = txt_clip.set_pos('bottom').set_duration(3).set_start(10)
# 映像とテキストを重ねる
video = CompositeVideoClip([clip, txt_clip])
# 動画として出力すする
video.write_videofile("sample_output.mp4")
コードは簡単だったんですが、難しかったのが以下のエラーの発生
これはImageMagickが私のPCに入っていなかったから。。。
解決に15分くらいかかりました( ; ; )
完成した動画
上のコードを走らせて、完成した動画はこちら!!
3秒間、サムネを表示するので、13秒後にテロップが表示されるばずなんですが。。。
んんん????
テロップが出てくるところをスクショしてみました。
↓
14秒後じゃない???
まさかの+1秒かいな(笑)
ん〜よくあるPythonあるある。
0が1的な考え。
かかった時間
1. 動画の選定:1時間
2. 手法の選定:0時間
3. コード書く:1時間
くらいの時間をかけて作成しました。
今回の案件は、手法もなぜか提案されていましたし
すぐに書けましたv(^_^v)♪
振り返り
mageMagickエラーと
set_hogehoge().set_hogehoge()みたいに書くのが
最初慣れませんでしたが。。。
なんとか動画上にテロップを出すコードを書くことができました。
もうPythonで動画編集できるから
という考えにはならず
簡単・大量になにか動画に重ねて何か表示させるときに使いやすいかなと思いました。
あ〜でもmageMagickエラーが本当に久々にPythonやってるなぁ〜
と実感させられるエラーでした(笑)