小さな電子バッジでBad Apple!!全編再生|圧縮の中身を可視化してみた【ESP32-S3】
NISHIO Hirokazu
0:00 / 0:00
小さな電子バッジでBad Apple!!全編再生|圧縮の中身を可視化してみた【ESP32-S3】
128 просмотров · 5 дней назад
NISHIO Hirokazu
60 подписчиков
128 просмотров · 5 дней назад
小さな電子バッジに、3分39秒のBad Apple!!をどう収める?
実機映像と元動画を並べ、圧縮のしくみを1フレームずつ可視化しました。
全6,573フレームの再生と分析に続き、後半では容量・ディザ・先読み・画面の同期・音声同期を7枚のスライドで解説します。
■ 見どころ
・大きな色付き映像は「その画素がどう復元されたか」の地図。黒や白の連続、過去のデータの再利用、直接保存を色分けしています。
・円グラフと直近8秒の積み上げ面グラフで画素の割合を、棒グラフで圧縮後の容量比を表示しています。
・白に見えていた部分が、実は255ではなく253。そのわずかな差がディザを生み、白の連続を分断していました。白点補正を試すと、映像データは25.77MBから23.05MBへ約10.6%小さくなりました。
■ チャプター
00:00 Bad Apple!! 全編・実機と圧縮分析
03:39 小さなバッジに全編を収める容量
03:49 ランレングス圧縮とHeatshrink
04:01 16階調とディザの画質比較
04:11 白の「253」に気づいた
04:23 重いフレームを先読みで吸収
04:35 ティアリングと画面の走査同期
04:51 音声を加えると、映像の進め方が変わる
■ 今回のデータ
表示用映像:372×280画素、16階調、30fpsの素材6,573枚
圧縮前の4ビット画素列:342.32MB
白点補正後の映像データ:23.05MB
実機用の音声データ:約2.42MB
映像・音声に使える保存領域:約29.23MB
音声と配置の余白を確保した映像の保存上限:約26.8MB
※上記はバッジへ保存するデータの容量です。YouTube用MP4や元動画ファイルの容量ではありません。MBは1,000,000バイトです。
※保存限界の線は「全編の平均でこの水準に収まれば保存できる」という目安です。1枚だけ線を超えても、そのまま保存不可になるわけではありません。
■ 実装と撮影について
ESP32-S3を搭載した丸型電子バッジで、保存済みデータを少しずつ復号して表示しています。ランレングス圧縮で同じ色の連続をまとめ、さらにHeatshrinkで繰り返すバイト列を圧縮します。先読みとパネルのTE信号を使った走査同期、音声の再生時刻に合わせた映像の制御も行いました。
分析画面はPCで生成しています。実機枠は筐体を含む実際の録画です。実機録画は白点補正前の版、容量と圧縮分析は白点補正後のデータを使っています。動画の音楽は元素材の音源で、実機スピーカーの録音ではありません。
■ 出典
映像・音楽の素材:『【東方】Bad Apple!! PV【影絵】』(あにら)
https://www.nicovideo.jp/watch/sm8628149
楽曲:Bad Apple!! feat. nomico / Alstroemeria Records
https://alst.net/about/
圧縮ライブラリ:Heatshrink / Atomic Object
https://github.com/atomicobject/heats...
#BadApple #ESP32 #電子工作