LoginSignup
1
0

More than 1 year has passed since last update.

LED パネルキット AKBONE2022 で動画再生

Posted at

秋葉原ロボット部で開発している LEDパネルキット AKBONE2022 は、らびやん さんの協力により LovyanGFX で動くようになっています。

今回は、高速で使いやすい LovyanGFX の特性を活かして動画再生にチャレンジ!

環境

  • AKBONE2022 基本キット
  • AKBONE2022 ブースターキット
  • 母艦 Ubuntu 22.04 LTS Ja

母艦は動画ファイルの変換に使います。ですが ffmpeg を使うことができれば Windows や Mac でも同様に使えるはずです。

ブースターキットのうち、今回の実験ではSDカードソケットだけを使用します。なので基本キットにSDのカードソケットだけを付け足すのでも構いません。

image.png

LEDパネルは 64x32, 128x64 どちらでも対応できますが、やはり解像度が高い方が見栄えがいいです。

元動画

WikiMedia から、File:Hubblecast 27.webm を使用しました。
https://commons.wikimedia.org/wiki/File:Hubblecast_27.webm
image.png

元動画は length 6 min 44 s, 1,920 × 1,080 pixels です。

WikiMedia では、各解像度にトランスコードされたファイルが用意されています。

image.png

今回使用しようとしている LEDパネルは 64x32 または 128 x 64 ドットなので、サイズが合いませんが最も解像度の低い Hubblecast_27.webm.160p.webm をダウンロードします。

動画を調査

$ ffmpeg -i Hubblecast_27.webm.160p.webm
.
.
.
  libpostproc    55.  9.100 / 55.  9.100
Input #0, matroska,webm, from 'Hubblecast_27.webm.160p.webm':
  Metadata:
    encoder         : Lavf57.56.101
  Duration: 00:06:44.05, start: 0.000000, bitrate: 221 kb/s
  Stream #0:0(eng): Video: vp8, yuv420p(progressive), 284x160, SAR 1:1 DAR 71:40, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
  Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
At least one output file must be specified

とすると、 284x160 であることがわかります。
これを 64x32 ないし 128x64 に変換します。

動画を変換

$ ffmpeg -i Hubblecast_27.webm.160p.webm -vf "crop=256:128:14:16,scale=w=64:h=32"  -c:v rawvideo -pix_fmt rgb565be 64x32.rgb
$ ffmpeg -i Hubblecast_27.webm.160p.webm -vf "crop=256:128:14:16,scale=w=128:h=64"  -c:v rawvideo -pix_fmt rgb565be 128x64.rgb

上の処理は、一旦256x128にトリミングして、更に縦横 1/4 ないし 1/2 に縮小しています。
フォーマットはRGB565be です。

また、今回は使用しませんが 256x128 や 384x192 の映像も以下のようにすると作ることができます。

$ ffmpeg -i Hubblecast_27.webm.160p.webm -vf "crop=256:128:14:16"  -c:v rawvideo -pix_fmt rgb565be 256x128.rgb

384x192 の映像は 240p のソースから作成します。

$ ffmpeg -i Hubblecast_27.webm.240p.webm 
.
.
.
Input #0, matroska,webm, from 'Hubblecast_27.webm.240p.webm':
  Metadata:
    encoder         : Lavf57.56.101
  Duration: 00:06:44.05, start: 0.000000, bitrate: 302 kb/s
  Stream #0:0(eng): Video: vp8, yuv420p(progressive), 426x240, SAR 427:426 DAR 427:240, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
  Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
At least one output file must be specified

426x240ドットということがわかりましたのでそこから384x192分を切り出します。

$ ffmpeg -i Hubblecast_27.webm.240p.webm -vf "crop=384:192:21:24"  -c:v rawvideo -pix_fmt rgb565be 384x192.rgb

64x32.rgb ないし 128x64.rgb を sd カードに保存します。

スケッチ

こちらを使います。

動画再生

image.png

写真では色が褪せてますが実物はかなりきれいです!
これだけできたら音も出したくなりますね! これから思案します。

注意点

LEDパネルはかなり電力を使用するので、ESP32 に供給している電源ケーブルだけだと不足気味です。
LEDパネルは輝度を低めにして使うほうが安定します。
補助電源コードなども併用してください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0