見出し画像

データベンディングとデータモッシュに挑戦した話

この記事はUMITRON Advent Calendar 2023 7日目の記事です。

はじめに

こんにちは。UMITRONのガニエです。
ウミトロンのソフトウェアエンジニアが集まる週次ミーティング内ではLTが開催されており、毎週誰かが仕事に関わることでもそれ以外でも何でも話して良いことになっています。
最近そのLTで、YouTubeで偶然見かけたのをきっかけに興味を持っていた「データベンディング」を実際に試してみた話を発表したのですが、もう少し突っ込んで調べてみたら「データモッシュ」、そして動画圧縮の奥深い世界も垣間見えたので、それについて書こうと思います。

データベンディングとは?

データベンディングとは、ある形式のメディアファイルをわざと別の形式向けのソフトウェアで加工して壊すことを指します。例えば動画ファイルを音声編集ソフトウェアであるAudacityで加工するといった手法が有名です。

ファイルを無理やり誤ったフォーマットとして認識させて編集しているわけなのでファイルは壊れるのですが、うまく壊すとグリッチ感が出てかっこいいため、編集の手法として利用されることがあるようです。

データベンディングを試してみる

わかりやすい解説動画がYouTubeにあったので、それを参考に試してみました。

まずはAudacityを使って非圧縮のAVIファイルを開きます。

「Rawデータをインポート」を使用してインポートし、エンコーディングを「A-Law」、バイト順序を「エンディアン無し」にするのが大事なようです。
動画の真ん中あたりを選択し、リバーブをかけてみる。
エクスポートする時はヘッダーは「RAW (header-less)」を選択し、エンコーディングは読み込みと同じく「A-Law」に。

開いたらあたかも音声であるかのようにリバーブやエコーなどといったエフェクトをかけてから書き出すのですが、壊れたとしても動画再生ソフトでの再生に支障がない範囲を選択してエフェクトをかけるのが肝です。
非圧縮の動画の場合、ファイルの先頭や末尾付近を除いた大部分がピクセルの情報になっているため、Audacityで開いたあと両端を避けて選択してエフェクトをかけてやればほぼ大丈夫だと思われます。

元動画の一場面。
Audacityでリバーブをかけた後の同じ場面。

物体の形などはなんとなくわかるものの、エフェクトをかけた範囲の色の情報が派手に壊れていて、バグった感じの映像が出来上がりました。

かけるエフェクトによって結果が変わるので、色々試し甲斐があります!

さて、圧縮された動画ではどうなるでしょうか?
H.264で圧縮された同じ動画をAudacityで開き、真ん中あたりを選択してエフェクトをかけたりしてみましたが、こちらはなかなか難しいです。

1秒にも満たない狭い範囲の編集によって、動画の大部分がこのように崩れました。

ごく一部を選択して加工しただけでも動画の広範囲に影響が及ぶ上に、どこを変えたらどんな効果があるかなどもわかりづらく、Audacityでの加工は限界がありそうに思われました(LTの段階ではここで力尽きていました)。

そこでデータモッシュの登場です。

データモッシュとは?

データモッシュはデータベンディングよりも広い意味を持った言葉のようで、メディアファイルを編集してグリッチ感のある効果を得ることを意味するようですが、特に圧縮された動画ファイルを動画ファイルとして加工することを指すことが多いようです(先ほどは動画ファイルを音声ファイルとして無理やり加工しました)。

例えば、H.264で圧縮された動画ファイルに含まれるフレームにはIフレーム、Bフレーム、Pフレームの3種類があり、そのうちI フレームは情報がそのフレーム内で完結している(フレーム内圧縮)一方で、Bフレームは前のフレームに、Pフレームは前後のフレームの情報に依存しています(フレーム間圧縮)。
なので、例えばPフレームをたくさん複製したりすると、グリッチがどんどん伝播していくような、特有の効果が得られることが知られています。

データモッシュを試してみる

こちらも実際にやってみようと思い、どうやら定番らしいAvidemuxというソフトウェアを用いたデータモッシュを行おうとしました。
やることは簡単で、Pフレームを選択して複製しまくるといい感じになる……と思ったのですが、あまりうまくいきませんでした。
期待していたようなド派手な効果にはならず、ただ動画がカクつくだけです。
どうやら、Avidemuxの新しいバージョンではデータモッシュを可能にしていた挙動が「修正」されてしまい、簡単にはできなくなってしまったようです。諸行無常。
(リンク先によると2.7.0の時点でデータモッシュは難しくなっており、一度設定をチューニングした上で書き出した動画をまた開く必要があるようです。mac向けの古いバイナリはちょうど2.7.0まではダウンロードできたので試してみたのですが、真似してみても中々うまくいきませんでした…。)

そういった事情もあってか、現在では有志がデータモッシュのためのスクリプトを書いてGitHubで公開したりしています。

そして嬉しいことに、なんとオンラインで気軽に試せるものがありました!

動画ファイルを選んでパラメータをいじってからRenderを押すとすぐにデータモッシュされた結果が見れました!

右下にレンダリングの結果が表示されており、すぐに効果が確認できる!

パラメータ調整に少しコツが要りますが、サイト内のリンクから飛べる解説動画もあり、慣れたら色々作れそうです。

おわりに

昔から趣味で音声や動画などを扱うプログラムを書くのが好きなのですが、ライブラリを経由してしか扱っていなかったので中身はあまり理解していませんでした。しかし、今回データベンディングとデータモッシングに挑戦したことで動画のコーデックについて学ぶとっかかりができたような気がします。
かっこいいエフェクトがかけられて楽しいですし工夫のしがいもあるので、皆様もいろいろなメディアファイルと戯れてみてはいかがでしょうか。


ウミトロンでは一緒に働く仲間を募集しております。持続可能な水産養殖を地球に実装するというミッションの元で、私たちと一緒に水産養殖xテクノロジーに取り組みませんか?

https://umitron.com/ja/career.html

https://open.talentio.com/1/c/umitron/requisitions/746


この記事が気に入ったらサポートをしてみませんか?