世界を動かす技術を、日本語で。

Emacsを動画編集ツールとして使う

概要

Marcin ‘mbork’ Borkowski によるEmacsでの動画トリミング方法の紹介。 QuickTime Player のトリミング機能との比較。 Ready Player Mode のシーカー追加をきっかけに、独自ツール開発を開始。 ffmpeg を活用したシンプルな動画トリミングツールの実装。 最新コードは Emacs config repo で公開。

Emacsで動画トリミングを行う方法

  • Marcin ‘mbork’ Borkowski によるEmacs上での動画トリミング手法の紹介。
  • 動画クリップのトリミングは、 スクリーンキャスト投稿 時などに頻繁に利用。
  • 通常はmacOS標準の QuickTime Player のトリミング機能を使用。
  • QuickTime Playerはシンプルだが、 Ready Player Mode に「グラフィカルシーカー」を追加したことで、独自ツール開発へのモチベーションが向上。
  • Marcin氏の投稿がきっかけとなり、自作の video-trimmer-mode を開発。

video-trimmer-modeの特徴

  • ffmpeg を利用して動画編集の重い処理を実現。
  • 実装はおよそ 300行程度 のシンプルなコード構成。
  • コード全体は Emacs configリポジトリ で公開、今後も改良予定。
    • 最新バージョンを常に確認可能。
  • ツールの開発・公開は LMNO.lol がサポート。
    • プライバシーポリシーや利用規約も整備。

まとめ

  • Emacsユーザー向けの 軽量な動画トリミングツール の選択肢拡大。
  • ffmpeg を活用したシンプルかつ柔軟な動画編集環境の実現。
  • 詳細や最新コードは Emacs config repo で随時確認可能。

Hackerたちの意見

これ、すごいね!これをフルスロットルの「ffmpegモード」にして、他の編集機能も追加できたら最高だと思う。

それめっちゃいいね(全然悪意はないけど)、どの「Emacsを使ってxをする」って投稿が冗談で、どれが真剣なのか全然わからないのが面白い。

Emacsがオペレーティングシステムだっていうミームを支持してるね。こういうグラフィカルな統合が、実際のOSでも簡単に実装できたらいいのに。

Emacsはelispインタープリタだよ。

これはすごいけど、(多分この投稿のターゲットじゃないから)よくわからないな。でも、ちょっと理解したい気持ちもある。「それ」とは、EmacsでXをすること、Xはテキストファイルの編集から離れた何かのこと。なんか、妊娠検査薬でDoomをプレイしてるみたいな感じがする。確かにできるし、すごいけど、やるべきなのかな?ちなみに、私はC#の開発者で、運命を受け入れてVisual Studioを使って生計を立ててるけど、自分のツールの欠点や長所を、出会ったり一緒に働いたりしたほとんどの開発者よりもよく知ってるつもり。プログラマーとしての最初の仕事はEmacsでC++のコードを書くことで、その経験については特にネガティブなことは思い出せない(ctrl+x、ctrl+sで保存するのに慣れるのが大変だったくらいで、Excelで同じことをやって、大事な部分を失ったことはあったけど)。この投稿に対する(今書いてる時点での)13件のコメントを読んで、少なくとも3つの軽量プログラムが言及されてるのを見た。「山があるから」以外に、どうしてEmacsがこのツールだと思う人がいるの?Resolveユーザーとして、短い動画クリップをトリミングするために、数GBのハリウッド級の非線形エディタや合成ソフト、カラーグレーダーを使うのが、ハンマーでキーを押すようなものであることは知ってる。だから、私は「理解できてない」可能性が高い。教えてほしい、どうしてこれや、HNで「Emacs」を検索したら出てくるページのページの「変わった」使い方にEmacsを使う必要があるの?Emacsが強力なエディタだってことは知ってるけど、動画クリップをトリミングするために使う理由が全然わからない。

いいコメントだね。私はコード、執筆、財務、タスク管理など、すべてにEmacsを使ってるけど、結局これらはテキストだから、非テキストなことにEmacsを使う理由がわからないな。

私にとってのポイントは、Emacsがカスタマイズ可能な環境で、こういうことを簡単に作れるってことだよね。他のEmacsの機能とも統合できるし。スタンドアロンのデスクトッププログラムはそれぞれ独立した小さな世界だけど、Emacsはその点でより統合された環境だと思う。

Emacsって変わってるよね。なんか脳の中で何かが変わった気がする。Emacsの前は、エディタから動画再生をコントロールしようなんて思ったこともなかった。「なんで?」って多分言ってたと思う。アクティブなタブのテキストを取得しようとも思わなかったし、ブラウザの履歴を検索することも、クリップボードの内容をOCRすることも、WMをコントロールすることも考えたことがなかった。Emacsの前は、テキストエディタで何かテキストを入力しようなんて思いもしなかったのに、今はそれが普通だよね。ブラウザウィンドウやSlack、Zoom、メールクライアントで入力するのにわざわざ苦労する理由がある?Emacsでは、テキストを扱うために必要なツールがすべて揃ってるんだ。シソーラス、スペルチェック、定義や語源の検索、検索エンジン、翻訳、LLMなど。なんで、他のアプリで二語以上のテキストを入力しようなんて思わないんだろう?例えば、今このコメントを打ってるときに、「前に似たようなコメントをした気がする、探してみようかな」って思うことがある。普通のユーザーはどうする?ブラウザに切り替えて、HNに移動して、下までスクロールして、検索クエリを入力して、ページを見て、次にジャンプして、見つかるまでページをめくって、コピーして、戻ってペーストする... 経験豊富なEmacsユーザーはどうする?エディタを離れずに検索して、バッファから必要なものを取り出してペーストする。すべて数回のキー入力で完了する。URLをブラウザの履歴から探す必要があるときも、検索してその場で挿入するだけで、二回のキー入力と検索クエリで済む。速いだけじゃなくて、すごく満足感があって解放される感じがする。自分がコントロールしているって実感できるんだ。特化したアプリのクセに悩まされる必要もないし、特定のキー操作をたくさん覚える必要もない。テキストを抽出したり挿入したりするためのストレートな道がある。それが、Emacsを心から使おうとしたことがない人が理解できない理由なんだ。そして、使ったことがある人は、どうして他の人がその価値を認識しようとしないのか理解できないんだ。

「Emacsは素晴らしいオペレーティングシステムだ…ただ、ちゃんとしたテキストエディタがあればなぁ」という格言には、ちょっとした真実があると思う。Emacsは基本的にelispのランタイムで、バッファやウィンドウみたいな基本的な機能があって、その上にテキストエディタが実装されてる感じ。テキストエディタというより、プログラミング環境に近いよね。例えばPharo Smalltalkみたいな感じ。elispでHTTPサーバーを実装することもできるし、SVGやHTML、PDFをレンダリングすることもできる。いろんなことができるんだ。

Emacsを使ってて、できるだけ多くのことをEmacsでやろうとしてる私から言わせると、Emacsでできることが増えれば増えるほど、いろんな機能が相乗効果を生んで、もっと便利になるんだよね。例えば、HTTPリクエストを作るためにVerbパッケージを使ってるんだけど、EmacsをHTTPクライアントにすれば、キーボードマクロを使って一括でHTTPリクエストを送れる。HTTPリクエストはorg-modeに保存できるし、特別な認証シナリオのためにカスタムElispを書くこともできる。必要に応じて新しいコマンドも作れるし。例えば、diredで使える動画の最初のX秒をカットするためのキーボードマクロを作るシナリオを想像できる(実際には使ったことないけど)。Emacsでのテキスト編集以外にも、めちゃくちゃ役立つ機能がたくさんあるよ。- MagitでのGit - Diredでのファイル管理 - Emmsでのメディアプレイヤー - elfeedでのRSSフィード などなど… よく考えられたEmacsのインターフェースを使うのは、私の技術的な人生の中で一番の喜びの源の一つだね。

私はEmacsで動画編集やウェブブラウジングをするタイプじゃないけど、その魅力はわかる。調整されたEmacsのインストールは快適だし、自分のやりたいことをするためのキーバインディングがある。Emacsのフレーム(今はGUIウィンドウって呼ばれてるけど)を自分の好きなように視覚的に整理できるし、画面の部分を好きなファイルで埋められる。チェックしたプロジェクトのREADMEを読んでて、気になる用語があったら、それを選択してLLMに送ることもできる。ClaudeやOpenAI/ChatGPT、Geminiの間を簡単に切り替えられるのも便利だし、どれだけのコンテキストを与えるかによって使い分けられる。まるで自分の好みに整理された個人空間を持っているみたい。外から見ると戦場のように見える人もいれば、きっちり整理されてラベルが付いている人もいるけど、共通しているのはそれが個人の空間で、その空間の持ち主が快適であることだよね。それがEmacsなんだ。新しい機能を使うために新しいキーバインディングやマウスクリックを覚える必要がなくて、ただEmacsに持ち込めばいいんだ。

私はEmacsの愛好者ではないし、Emacsに詰め込まれているものの中にはちょっと変なものもあると思うけど、OPの言うことには賛同するよ。これはffmpegのフロントエンドだね。ffmpegはテキストベースのユーティリティで、Emacsはテキストエディタ。実際、これは理にかなってる。スクリーングラブを見る限り、普通のffmpegよりもずっと使いやすそうだし。もし私がEmacsユーザーだったら、絶対にこれを使ってみたいと思うし、ちょっと羨ましいな。 [0] 最近の例として、orgファイルをHTTP経由で動かすプロトソーシャルネットワークがある(まるでHTTP用に設計されたマークアップ言語がすでにあるかのように) https://news.ycombinator.com/item?id=44889354

この場合、ffmpegを使うためのインタラクティブモードとして見るべきかな?つまり、Emacsがトリミングをしているわけじゃなくて、ffmpegに便利にアクセスできるようにしているだけなんだ。これが約300行のコードで実現できるのはかなり印象的で、なぜ人々がEmacsで何かをするのが好きなのかを物語ってるね。もしこれが動作する状態にするためにコードゴルフされていたら別だけど、コードを読む限り、ffmpegとのやり取りは驚くほど簡単だよ。

Emacsを使った動画トリミングツールは、普通のEmacs APIやドキュメントがあって、一般的なEmacsユーザーを想定して開発されてるはず。ツールの開発者のスキルにもよるけど、学ぶのも使うのも自動化するのも、そんなに頭を使わなくて済むってことだよね。ブラウザに切り替えたり、アカウント作ったり、アプリストアに行ったり、ライセンス同意したり、危険なプログラムの警告が出たり、通知をオンにしたり、プレミアム機能を解除したり、アップデートがあるって言われたり、マーケティングメールが来たり、クッキーに悩まされたりすることもない。とにかく、静かにしてて、ちゃんと機能するってこと。もしそれが十分に良ければ、それでいいんだよ。余計なことは一切いらない。

いつも思うんだけど、妊娠検査薬でDoomをプレイするみたいで、できないよね >:( あのredditの投稿、すごくイライラする。妊娠検査薬の部分はプラスチックの外殻だけで、他は全部置き換えられてるのに、みんな「妊娠検査薬でDoomを動かしたって知ってた?」って言うんだよね。(そして、深呼吸…)

これは面白いね。Emacsを動画トリミングに使うなんて考えたことなかったけど、なんでダメなの?FFmpegで手動で動画をトリミングしたことがあるし、自分のGUIを作ろうとも思ったから、Emacsも悪くない選択肢だと思う。私はあんまりEmacsを使わないけど、みんながいろんなことに使ってるのが好きだな。次のステップは非線形動画エディタかな。

すごくいいね。私はEmacsをよく使ってるし、動画のトリミングも結構やる。なんで「Emacs?」って思ってる人には、使い方を説明するよ。動画のトリミングは主に開始時間と終了時間を書き留めることが多いんだけど、それが全部テキストなんだ。別の動画編集ソフトに切り替えずに、そのテキストを直接クリップに変えられたら、驚くほど効率的なんだよね。もちろん、Emacsの中で生活してる人にとっては意味があるけど、そうじゃないとちょっと変に見えるかも。でも、「Emacsで何でもやる」っていうミームを作ることが目的じゃなくて、あくまでその環境にいる人のワークフローに合った小さなツールなんだ。

25年以上Emacsを使ってきたから、筋肉の記憶がたくさんあるんだ。だから、Davinci ResolveのためにEmacsショートカットを作ったよ。(私はたくさんの動画を作るし、編集を外注しようとしたときは、いつも自分でやるよりもレビューやフィードバックの方が大変だった。ResolveのAIトランスクリプション機能を使ったルーチンがあって、すごく早く動画を編集できる。一時間の動画を編集するのに2〜3時間かかることもあるけどね。)

あなたのワークフローを動画で説明してくれない?

一度、Emacsを使ってるDJの白昼の夢を見たことがある。

ここにいるよ。

存在するよ: https://www.youtube.com/watch?v=l3h773bycP8

他のレスも同じようなことを言ってたけど、簡潔に言うと、Emacsベースのソリューションは: 1. キーボード操作 2. プログラム可能 3. 既にいるエコシステムの中にある(軽量、クロスプラットフォームなど)。

何年か前に友達が言ってたんだけど、「十分な時間があれば、どんなにメンテナンスされているアプリもオペレーティングシステムになる」って。これ、EmacsやMicrosoft Excel、Microsoft Word、たぶんvimにも当てはまる。AutoCAD、Blender、Eclipseも honorable mentionだね。 :-)