【Python】MoviePyで動画編集の自動化【動画編集への道#1】

この記事は、FFmpegコマンドを直接書くのに疲れた人が、PythonでサクッとカットやテロップやBGMミックスまで自動化するための入門メモです。 MoviePyはコアにFFmpegを使いつつ、Pythonらしいオブジェクト指向で VideoFileClip(...).subclip(...).write_videofile(...) のようにつなげて書けるので、動画編集ソフトを開かずに同じ加工を繰り返したいときに向いています。 まず手を動かすなら、後述の 指定時間でカット からどうぞ。1分尺の動画から数秒だけ切り出して書き出すだけなら、10行ほどで済みます。 準備 Pythonやシェルを使った動画編集の第一弾としまして、MoviePyでの動画編集をご紹介していきます。MoviePyの全体像や最新情報は 公式ドキュメント にまとまっていますので、ご覧ください。 次のような動画フォーマットを元に、MoviePyで動画を編集していきますね。 項目 値 サイズ 1280 × 720 エンコード H.264、 AAC MoviePyのインストール pipでMoviePyをインストールしましょう。Pythonは3.x系を使っていきます。 本記事のサンプルは from moviepy.editor import * や subclip を前提とした 1.x 系で書いています。2.x 系ではインポートパスや一部APIが変わっておりサンプルがそのままでは動かないため、バージョンを固定してインストールしてください。 $ pip install "moviepy<2" なお、MoviePyのコアでは ffmpeg のバイナリを呼び出します。OS側に ffmpeg が入っていない場合は事前にインストールしてください(macOSなら brew install ffmpeg、Ubuntuなら sudo apt install ffmpeg)。 それではMoviePyの使い方、プログラミング例をご紹介していきます。 指定時間でカット from moviepy.editor import * start = "00:00:03" # 開始時刻 end = "00:00:06" # 終了時刻 final_clip = VideoFileClip("in.mp4").subclip(start, end) final_clip.write_videofile( "split.mp4", codec='libx264', audio_codec='aac', temp_audiofile='temp-audio.m4a', remove_temp=True ) 音が出ない時の対処 write_videofile に何も指定しないと、環境によっては音が落ちて書き出されることがあります。MP4 で配るなら audio_codec='aac' と一時ファイル名 temp-audio.m4a を明示しておくと安定します。書き出し後はQuickTime / VLCなどで実際に音が出るかも軽く確認しておくのがおすすめです。 ...

公開: 2022年7月22日 · 更新: 2026年6月1日 · Toshihiko Arai

【tesseractでOCR】PDFから文字の抽出→文字データが埋め込まれたPDFを作成【自炊への道】

自炊でスキャンしたPDFを「テキスト検索できるPDF」に変換したい——この記事ではそのための手順を解説します。 処理の流れは次のとおりです。 自炊PDF → pdftoppm → PNG画像(ページ毎)→ tesseract → テキスト埋め込みPDF(ページ毎)→ pdfunite → 完成PDF この記事では tesseract を使って手動で処理します。tesseract はOCRエンジン単体のため、PDFをいったんページごとの画像に変換してからOCRをかけ、再度PDFに結合するという手順を取ります。 tesseract(OCR) はじめに、画像データから文字を認識してPDF化するtesseract(OCR)を使ってみましょう。 https://github.com/tesseract-ocr/tesseract tesseractのインストール macOSの場合は、brewでインストールできます。 デフォルトでは英語のみしか認識できませんので、日本語にも対応するように tesseract-lang を合わせてインストールします。 $ brew install tesseract tesseract-lang インストール後、バージョンを確認してみましょう。 $ tesseract -v tesseract 5.2.0 leptonica-1.82.0 libgif 5.2.1 : libjpeg 9e : libpng 1.6.37 : libtiff 4.4.0 : zlib 1.2.11 ... メモ: 上のバージョン出力は記事執筆時(2022年)のものです。brew upgrade 後は異なるバージョンが表示されます。 日本語が使えるか確認するには、--list-langs オプションが便利です。 $ tesseract --list-langs List of available languages (3): eng jpn jpn_vert jpn が含まれていれば日本語OCRが使えます。 ...

公開: 2022年7月18日 · 更新: 2026年5月26日 · Toshihiko Arai

waifu2x 劣化した写真を高画質化

はじめに この記事は、劣化した写真や画像を深層学習でノイズリダクションしつつ高画質化するコマンドラインツール waifu2x を、macOS の Homebrew からインストールして使った記録です。 上の写真左は荒い画質でしたがwaifu2xでコンバートすることで、写真右のようにノイズが減りなめらかで自然な画像になりました。 対象読者は、低画質しか残っていない素材画像を Photoshop などのGUIアプリではなくシェルでサクッと変換したい人 です。インストール手順(macOS / Homebrew)、-t(type)-s(scale)-n(noise)など各オプションの使い方、写真とフィルム写真への変換例を順番にまとめます。 2026年時点での注意点 オリジナルの nagadomi/waifu2x は2018年でメンテナンスが止まっており、本記事で使っている macOS 向け派生版 imxieyi/waifu2x-mac や Web サービス waifu2x.udp.jp も、現在は更新が滞っていたり一時的にアクセスできない場合があります。新規に使う場合は次の点に注意してください。 Homebrew からインストールできても、macOS の世代によっては動作確認が取れていないバージョンに当たることがあります。Apple Silicon 環境では Rosetta 経由の挙動になるなど環境差が出やすいので、まずは小さい画像で出力を確認してから本番の素材に使うのが安全です。 Web サービス版(waifu2x.udp.jp など)は、有志運営のため恒久的に使える前提では設計しないでください。業務利用や継続利用が必要な場合はローカルで動かせる手段を確保しておくのが安心です。 2026年現在は、より新しい AI ベースの超解像・アップスケールツール(Real-ESRGAN 系派生など)も登場しています。本記事は当時の手触りを残すための記録として読んでいただき、新規導入時は他の選択肢と比較するのがおすすめです。 ウェッブ宇宙望遠鏡 Wikipedia より 昨日、NASAのジェームズ・ウェッブ宇宙望遠鏡のニュースが話題に上がりました。はるか遠方にある天体を、今までにない高精度な画像で捉えることができたのだとか。ウェッブ宇宙望遠鏡は赤外線で観測しているらしく、個人的には興味がわくところです。 さてそんな中、宇宙に関することをネットサーフィンしていて、JAXAの論文 「宇宙科学情報解析論文誌: 第9号」 にたどり着きました。論文の中では「あかり」という衛星で観測した 解像度の低い画像を、高解像度に変換するアルゴリズム が紹介されていました(「あかり」もまた赤外線を使って観測するようです)。 論文の数式は正直さっぱりでしたが、この手のプログラムはすでにGitHubにありそうだと思い調べてみたところやはりありました。それが「waifu2x」です。 この写真のように劣化した画像(右)をwaifu2xで復元(左)してみました。いかがでしょうか?ざらつきがなくなり、くっきしりして見えますよね?すごいと思いませんか!? 画像編集ソフトによくある、アンチエイリアスやシャープネスといった処理とも違います。 「waifu2x」では機械学習を使っているようです。第3次AIブーム以降、機械学習を使ったアルゴリズムが流行ってますよね。クライアント側の負荷を無視すれば、将来の圧縮技術として使えるのでは!?なんて思ったりしますがどうなんでしょうか。 waifu2xとは waifu2xは深層畳み込みニューラルネットワークを使って、アニメの画像や写真などに対して画像スケーリングやノイズリダクションを行うプログラムです。 (機械学習などのむつかしいことを知らなくても、プログラムは簡単に使えますのでご安心ください。) 作者は nagadomi さんで、waifu2xの初版は2015年10月11日です。2018年で開発は止まっておりますが、MIT licenseでGitHubにてオープンソースで公開されてます。 https://github.com/nagadomi/waifu2x waifu2xの語源は、「Waifu」は理想的な女性キャラクターに対して用いられるアニメスラングで、「2x」は2倍を意味することからきてます。 apt-get でインストールするのでUbuntuやRaspberry PiなどDebian系Linuxで動かすことが前提のようです。ですがオープンソースで公開されているのでforkの数も多く、いろんな有志の方々によって iOS や macOS 、 Python でも動くような改造版がリリースされてます。さらに ウェブサービス版 も存在します。 本記事では、macOSのbrewでインストールできる waifu2x-mac を使ってみます。 ...

公開: 2022年7月13日 · 更新: 2026年6月2日 · Toshihiko Arai

Stickiesをショートカットキーで現在のデスクトップに開く

macOSで標準インストールされているStickiesを、現在作業しているデスクトップにショートカットキーで開く方法です。複数の仮想デスクトップを使っていると、Stickiesを開いたデスクトップへ勝手に切り替わってしまうことがあります。 そこで今回、Automator(AppleScript)とショートカットキー登録の組み合わせで、現在開いているデスクトップに一発でStickiesを表示させてみた。この記事ではその方法をお伝えする。 Automatorの作成 Automatorの作成手順は次の通り。 「Automator」アプリを開く 「QuickAction」を選択する 「apple」で検索する 「Run AppleScript」を選択する プログラムを記述する(後述) 「OpenStickies」の名前をつけて保存する AppleScript こちらのAppleScriptをAutomatorへ貼り付ける。やっていることは、Stickiesを一度終了させ再度起動させている。これだけでStickiesを使うたびにわざわざデスクトップの移動をしなくて済む。 on run {input, parameters} tell application "Stickies" to quit tell application "Stickies" run delay 0.1 activate end tell return input end run ショートカットキーへ登録 次に、先ほど作ったスクリプトをショートカットキーで実行できるようにしよう。ショートカットキーの登録手順は次のとおり。 「System Preferences」アプリを開く 「shortcuts」で検索 左の一覧から「Keyboard」タブを選択 「Keyboard Shortcuts」ボタンを選択 左の一覧から「Services」を選択 「General」内の「OpenStickies」でショートカットキーを登録 今回はoption + shift + SでStickiesが起動できるようにした。 その他の便利な機能 Stickiesで常に最前面に表示したい場合は次のショートカットキーで可能。 option + shift + F 関連記事 macOS向け IntelliJ IDEA ショートカット チートシート JavaScript チートシート Shell Stash - シェル手帖

公開: 2021年1月7日 · 更新: 2026年5月6日 · Toshihiko Arai

FFmpegでGIFアニメ作成|シェル・コマンド

はじめに この記事では、iPhoneで録画した動画ファイルを、FFmpegでGIFアニメーションに変換する方法を解説する。 パレット機能で見た目を整え、gifsicleでファイルサイズを小さくするところまで扱う。 最後に、GitHubで公開しているスクリプトをcurl経由でその場実行する方法も紹介する。 なお、macOSにbrewを使ってFFmpegがインストールされているものとする。 FFmpegでGIFアニメの基本の作り方 iPhoneで録画した動画ファイルをinput.movとして用意した。動画のファイルサイズは5.3 MB。 FFmpegを使って、動画ファイルをGIFアニメに変換するコマンドがこちら。横幅を320pxに収めるため、アスペクト比を保ちながら変換した。フレームレートは15fps。 ffmpeg -i input.mov -vf scale=320:-1 -r 15 output.gif ご覧の通り、画像がざらざらしていて、決してキレイとは言えない。GIFアニメのファイルサイズは約288 KB。 次では、もうひと手間かけて画像をキレイにする方法を紹介する。 FFmpegでGIFアニメをキレイに作る方法 FFmpegでGIFアニメをキレイに作るには、パレット機能を使う。次のコマンドで動画ファイルから色彩情報を抽出したpalette.pngを作成する。 ffmpeg -i input.mov -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png 生成されたpalette.png画像がこちら。 このpalette.pngを元に動画を変換する。 ffmpeg -i input.mov -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif だいぶキレイなGIFアニメを作ることができた。しかし、ファイルサイズは約786 KBで、最初のGIF画像の3倍弱の容量になってしまった。そこでこのファイルサイズを小さくする方法を次の項で紹介する。 GIFアニメのファイルサイズを小さくする方法 ここでは、GIFアニメのファイルサイズを小さくするために、gifsicleを使ってコマンドラインで圧縮する方法を紹介する。 gifsicleは、GIFをコマンドラインで編集できるツールだ。brewを使ってインストールする。 brew install gifsicle Gifsicleの詳細はこちら。 https://github.com/kohler/gifsicle 使い方は、次のとおり。 gifsicle -O3 --colors=128 --lossy=30 output.gif -o output_compressed.gif lossyの値を増やしていくとファイルサイズが小さくなる。 この結果、ファイルサイズを約786 KBから約369 KB(約53%削減)へと圧縮できた。 見た目もそれほど変わらない。 アニメGIF作成のシェルスクリプト ここまでのコマンドを毎回入力するのは面倒なので、シェルスクリプト化してみた。 使い方は、$ ./gif_anime.sh 動画ファイルで引数に動画のパスを渡す。すると、動画ファイルのディレクトリ上にanime.gifの名前でGIFアニメが保存される。 #!/bin/bash input=$1 output=$(dirname ${input})/anime.gif tmp=$(dirname ${input})/tmp.gif echo $output ffmpeg -i $input -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png ffmpeg -i $input -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" $tmp gifsicle -O3 --colors=128 --lossy=30 $tmp -o $output rm -rf palette.png rm -rf $tmp 同じ考え方のスクリプトは、GitHubのshell-toolbox でも公開している。 手元にスクリプトを保存せず、その場で実行したい場合は、次のようにcurlで取得した内容をbashへ渡す。 ...

公開: 2019年3月6日 · 更新: 2026年4月29日 · Toshihiko Arai