はじめに
前回の記事でPythonで動画の撮影を行った後、LXTerminalでコマンド入力をしてh264形式のファイルをmp4形式に変換しました。
しかし、動画をたくさん撮影するということになった時にそんな事をいちいち行なっているのは少しバカらしいのでPythonからコマンドを呼び出して処理することにしました。
ソースコード
個人的にファイルを分けた方が可読性が高いと思っているので分けてあります。
特に説明するようなコードではないので詳しい説明は省略しますが、何かあればコメントでお願いします。
chmp4.py
関数を1つだけ定義しています。
chMp4関数は引数に「ファイル名(拡張子を除く)」を受け取って、「ファイル名.h264」という動画ファイルを「ファイル名.mp4」という動画ファイルに変換します。
変換後に「ファイル名.h264」という動画ファイルは残りません(ゴミ箱にも残りません)。
from subprocess import call #コマンド実行 #mp4形式に変換&h264形式のファイル削除 def chMp4(file_name): #h264形式をmp4形式に変換 cmdcvt = "MP4Box -add " + file_name + ".h264 " + file_name + ".mp4" #コマンド call([cmdcvt], shell = True) #コマンド実行 #h264形式のファイルを削除 cmdrm = "rm " + file_name + ".h264" #コマンド call([cmdrm], shell = True) #コマンド実行
camera.py
import picamera #カメラモジュール用 from time import sleep #時間計測用 from chmp4 import chMp4 #mp4形式へ変換 cap = picamera.PiCamera() #インスタンス生成 cap.resolution = (1920, 1080) #画像サイズの指定 mv_name = "movie" #保存ファイル名 cap.start_recording(mv_name + ".h264") #録画開始 sleep(5) #5秒待つ cap.stop_recording() #録画終了 chMp4(mv_name) #mp4形式へ変換
実行
2つのファイルを同じディレクトリに配置します。
「camera.py」の方を統合環境で開いて実行します。
実行が終了すると次の画像のように2つのファイルと同じディレクトリに「movie.mp4」という5秒間の動画ファイルが生成されているはずです。
最後に
これで多少は便利になりました。
ラズパイ同士の撮影の同期、カメラ校正、画像処理…うっ頭が。
やる事が多すぎてパンクしそうですが気分転換にブログ書きながら頑張ります。
コメント