うっかり使い始めた Blender VSE
(aras-p.info)Blender VSE に偶然貢献することになった
- 2か月前、Blender の Video Sequence Editor(VSE)に少しだけコードを提供し始めた。
- Blender に動画編集ツールがあることを知っていただろうか? 私は知らなかった。
- 動画編集、タイムライン、シーケンサー、カラー補正、ffmpeg、オーディオミキシングなどについて何も知らないまま、VSE を扱い始めた。
VSE の作業をどうやって「偶然」始めることになったのか?
- Unity の Unite 2023 カンファレンスをアムステルダムで見て、友人たちを訪ねることにした。
- カンファレンス後、半日だけ Blender 本社を訪問し、Francesco と Sergey から VSE に貢献する意思があるかと聞かれた。
- こうして VSE の作業を始めることになった。
タイムライン描画の改善
- VSE のタイムラインは画像の下部にあり、一度に約 3000 本の「ストリップ」が見える。
- タイムラインをスクロールしたり移動したりすると、ユーザーインターフェースはおよそ 15fps で更新されていた。
- 現在では 60fps 以上で更新されるようになった(#115311)。
スコープ
- VSE では、画像ヒストグラム、ウェーブフォーム、ベクトルスコープのような典型的な「スコープ」を表示できる。
- ヒストグラム、ウェーブフォーム、ベクトルスコープに改善が入った。
ffmpeg の部分
- Blender は主に ffmpeg ライブラリを使ってオーディオ/ビデオの読み書きを行っている。
libswscaleを使って動画フレームの RGB↔YUV 変換を行っている。- 現在はマルチスレッドを活用し、RGB→YUV 変換段階をより高速に処理するようになった(#116008)。
オーディオのリサンプリング
- オーディオライブラリ(Audaspace)内で、オーディオクリップデータのリサンプリングに多くの時間がかかっていた。
- Audaspace に新しい「中」品質のリサンプリング設定を追加し、レンダリング時に使うようにした(#116059)。
画像変換とフィルタリング
- VSE では画像、動画、テキスト、シーンなどを変換できる。位置指定、回転、サイズ変更、追加クロップの適用などだ。
- これらの変換はすべて CPU 上で実行され、すでにマルチスレッド化されている。
「半ピクセル誤差」の修正
- コード内には複数の「半ピクセル誤差」があり、多くの場合は互いに打ち消し合うか目に見えなかった。
- これらの誤差は修正された(#116628)。
Bilinear フィルタリング周辺の透明な縁
- Bilinear フィルタリングだけが、結果画像の周囲に透明部分を追加していた。
- 現在は Bilinear フィルタリングのコードから「透明へのブレンド」を削除した(#117717)。
フィルタリングの追加と変更
- VSE のストリップ変換には Cubic フィルタリングの選択肢がなかった。
- 現在は VSE で 2 種類の Cubic フィルタリングを選べるようになった(#117100, #117517)。
- 「Auto」フィルタオプションを追加し、デフォルトに設定した(#117853)。
VSE エフェクトの最適化
- 実際の映像データセットでは多くのエフェクトは使われていないが、コード内で気づいた点を最適化した。
- その大半はマルチスレッド化による最適化だ。
これらすべてはレンダリング時間にとって何を意味するのか?
- Blender Studio が提供する 3 つのデータセットでは、VSE 映像の最終レンダリング時間が PC 上でおよそ 2 倍高速になった。
実際の作業プロセスについての考え
- 上のすべての作業が、2 か月間のパートタイム作業として「十分な量の仕事」なのかはよく分からない。
- 開発者である私はこの分野やコードベースについて何も知らなかったにもかかわらず、かなりうまくやれた気がする。
- 合計 37 件のプルリクエストが完了し、レビューされ、マージされた。
次は何か?
- Blender 4.1 はベータ版となり、機能面では「完成」している。
- Blender 4.2 の作業が始まり、今後も VSE に取り組み続ける予定だ。
GN⁺ の見解:
- この記事は Blender の VSE に対する改善点と開発過程を共有するもので、オープンソースプロジェクトへの貢献がどれほど重要かを示している。
- 開発者が自分の専門分野ではない領域でも意味のある貢献ができることを強調し、新たな挑戦を後押しする前向きなメッセージを伝えている。
- この記事はソフトウェア開発における最適化と性能向上の重要性を強調し、こうした改善が実際のユーザー体験やレンダリング時間にどのような影響を与えるのかを具体例とともに説明している。
1件のコメント
Hacker Newsのコメント