Raspberry Pi3 B+でLED電光掲示板に動画を流してみる

この記事は最終更新日から1年以上が経過しています。情報が古くなっている可能性があります。

Raspberry Pi 3 Model B+ で rpi-rgb-led-matrix というライブラリを使用して LED 電光掲示板(LED マトリクス)にアニメの動画(映像)を流してミニデジタルサイネージ風にしてみようという備忘録諸々…

今回は 64×64 の LED パネルを2つ購入し、128×64 の解像度の LED マトリクス再生環境を構築します
こちらの記事とこちらのサイトをとても参考にさせて頂いています、ありがとうございます)
再生には rpi-rgb-led-matrix というライブラリを使い、ソフトは自作(改造)して再生させています

Sponsored Link

注意

  • かなり前にやった事が含まれているので、正確性は保証できません
    • 基本メモ書きです
    • ラズパイ 4 などの新しい環境で動くかは微妙…
    • C++ 本当に なにも わからない
    • 間違ってるーみたいなのがあればコメントまでお願いします
  • この記事通りにやって動かなくても責任は取れません、自己責任で行ってください
  • 全部買いこむと10000円は超えるのでお気をつけて…

必要なもの

※抜けてるものがあるかもしれません

  • Raspberry Pi 3 Model B+
    • 新しい機種出てたらそちらの方がいいと思います
    • 別途起動に USB 電源が必要です
      • 私は iPad 用の充電器で代用していますが、普通に「ラズパイ用」とかで売られてる電源で良いと思います・詳細はほかをあたってください
    • あと、基本的に(セットを除き)前述の USB 電源や USB ケーブルは入っていないので、あるとは思いますがもし手元にない場合はいつもの USB – MicroUSB 変換ケーブルを買っておきましょう

  • LEDパネル(64×64 のパネル (32S) を2個)
    • 他の解像度の場合、配線が違ってくる上に動画再生するにはピクセル数が少なすぎるため、これくらいをお勧めします(64×64 のパネルを2個つなげれば 128×64 の解像度になる)
    • 基本的に何故か日本国内では売ってない(売ってても非常に高い)ので、China から注文します…
    • 私は AliExpress(中国の電子部品メーカーが個人向けに卸してる製品を売ってるアリババグループのサイト)のこちらの製品を購入しました
      • この商品が一番お安いし評価も高くて良いと思います
      • 必ず 32S を注文してください、16S のタイプだと64×32のパネルを縦にくっつけているのと変わりません
      • 他にも AliExpress で p3 64*64 とかで検索してみるといいかもです
    • どうやら LED パネルは HUB75 という業界規格に基づいて作られてるらしく、よっぽどの物でなければ別の製品でも同じような配線・ケーブルで使えるみたいです(参考・LEDドットマトリクスパネル HUB75規格について調べてみた
    • フラットケーブル(パネル間・パネル-ラズパイ間の接続ケーブル)と後述の電源ケーブルは殆どの製品が付属します(私が買った製品も付属していました・2個一緒に買うと充電ケーブルをLEDパネル2個用の充電ケーブルを添付してくれます(思ったより良心的))
    • 中国郵便で注文した所そもそも発送までが遅く2週間以上かかったので、出来るだけ余裕のある注文をお勧めします

ぐちゃぐちゃしていて見づらいですが、下の変換アダプタ噛ませてるケーブルが LED パネル給電用ケーブル、奥のラズパイに接続しているケーブルがラズパイ給電用ケーブル、ラズパイから LED パネルの方に伸びている沢山のジャンパーワイヤが LED パネルデータ送信用ケーブルになります

  • LED 給電用
    •  給電用電源( 5V3A 以上)
      • 電流が足りないと LED 全体の画面を真っ白にした際に LED を全て光らせるだけの電力を確保できず、電力を食う緑・青の LED の輝きが弱まりオレンジっぽくなる現象が起こるので、つよつよな方はスイッチング電源かなんかを使うのが良いのでは…(わからん)
      • 以前は iPad 用の 5V2.1A の電源と Amazon で売ってた USB-DC変換ケーブル を使っていましたが、明らかに電流が足りなかったので、秋月電子通商にて販売している 5V4A の電源を購入しました(こちら
        これでだいぶ症状が改善したので、こちらを購入する事をお勧めします(あいにく当時は売り切れでしたが、もっと電流が大きいのもあるようなのでそっちでもいいかも…)
    • DC ジャック-スクリュー端子台変換コネクタ
      • 私は秋月電子のこちらの製品を使っています
    • 流れとしては給電用電源 → DC ジャック-スクリュー端子台変換コネクタ → 電源ケーブル( LED パネルに付属してるはず)という感じになるはずです
  • ラズパイ- LED 接続用ジャンパーワイヤ(オス-メス):最低16本以上
    • 私は秋月電子のこちらの製品を使っています(16本以上なのでこの10本セットの奴の場合は2個買えば OK のはず)
    • ただし、ケーブルが少し安っぽいせいか、接触不良で何度か抜き差ししたら何本か壊れてしまったりしたので、1個余分に買っておくことをお勧めします…
    • 後、ほかにもなんだかんだ使えるのでオス-オスの方(この製品とか)も買っておいた方が良いです
  • スピーカー
    • 同時に音も鳴らせるので、適当なスピーカー(イヤホンジャックから出力できるもの)も買っておきましょう
  • USBオーディオサウンドカード
    • rpi-rgb-led-matrix は、デフォルトでラズパイの bcm2835 サウンドモジュール(サウンドカード?)に使われている回路を使ってハードウェアパルスを生成します
    • そのため、サウンドモジュールが有効になっていると、ハードウェアパルスが生成できません
    • 一応ハードウェアパルスを使わずに再生できない事もないのですが、動画が若干ちらついたりするので、非推奨らしいです
    • そもそもラズパイ内蔵のサウンドカードは音質がかなり悪いので、別途買っておいたほうが良いと思います
  • (お好みで)2つの LED パネルを固定する資材
    • 私は頻繁に持ち運ぶため結局ちょうつがいで折りたためるようにしましたが、見栄え重視ならパネルを固定して前面にアクリル板でも付けると綺麗かもしれません
  • (お好みで)ラズパイ用のディスプレイ
    • 金欠だったので買いませんでしたが、あった方が何かと便利です
    • ディスプレイを買う場合、マウスとキーボードも購入必須です
    • 私の場合、まず SSH でラズパイに接続できる環境を用意してから、xrdp という Linux 上でリモートデスクトップを可能にするソフトを使い Windows 標準のリモートデスクトップからリモート出来るようにしています( VNC とかでもいいですがお好みで)
    • ただし、ラズパイのローカルネットワーク上の IP アドレスを調べないといけないがこれがまた面倒なので、リモートデスクトップのホスト側の PC に Bonjour というソフトを入れ( iTunes 入れると入ってきます)、raspberrypi.local というローカルネットワーク内のみで有効なドメインでアクセスできるようにしています(リモートデスクトップの画面で raspberrypi.local と入力すると接続できます・面倒なので後はggってください)
  • (お好みで)LANケーブル
    • 上述の通り私はラズパイをリモートデスクトップ + SSH で運用しています
    • 家の中とか Wi-Fi が通じる環境なら全く問題がないのですが、例えばどっかに出し物に持っていく時など Wi-Fi に繋がらない(ラズパイとホストPCが同じネットワークに存在しない)場合、ラズパイと通信できないため問題です
    • スマホでテザリングする方法とかもありますが、手っ取り早くラズパイとホスト PC を LAN ケーブルで直接繋げると、ラズパイと通信できるようになります(この場合でも raspberrypi.local のドメインでリモートデスクトップできます)
    • お使いの PC に LAN ケーブル端子が付いていない場合は変換端子を買っておくといいかもしれません

他にも色々あるかもしれませんが、大体これくらいだと思います…

配線

私は LED パネルとの間をフラットケーブルで接続し、余ったフラットケーブルを LED の裏側(基盤が見える方)から見て一番左側の端子に接続、もう片方の端子にジャンパーワイヤを接続するような構成としています

LED の規格について

配線の前に LED の規格について(ほぼこちらの投げ売り)ですが、LEDパネル( 64×64 なら 4096 個)全ての LED を同時に光らせるのは現実的ではないため、高速で LED の点灯・消灯を繰り返すことであたかも全部ついているように見せているんだそうです( LED 行先表示器をシャッタースピード 1/1000 とかで撮ると切れるのはそのため)

64×64 の LED パネルの場合、縦に64列、横が64列あるので、全部で32セクションに列を分けます

ここでの縦・横はそれぞれ縦長の列・横長の列の事です(縦・横に積まれている列ではありません)

1セクションは一番上の横1列目と真ん中の横33列目、2セクションは横2列目と横34列目…と言った感じらしい
1セクションあたり横に64個 LED が並んでいるのが2列で合計128個の LED をセクションを高速で切り替えながら表示していくんだとか…?(だから実際は LED は一度に128個しか点灯していない)

R1・G1・B1 がセクション上段の1番左のピン、R2・G2・B2 がセクション下段の1番左のピンを点灯させる(同時に2つの LED 点灯を指示させることができる…?)ので、信号をあと63回送って上段64個、下段64個の LED を点灯させたら、消灯させて次のセクションを選択、点灯、消灯…を繰り返してセクションの最後まで行ったら最初のセクションに戻ってまたセクション選択、点灯、消灯…を繰り返す、
といった流れみたいです(めちゃくちゃ分かりづらい)

各ピンの役割は、

  • R1 … LED の R (赤)部分を点灯させるかの信号を出す (セクション上段)
  • R2 … LED の R (赤)部分を点灯させるかの信号を出す (セクション下段)
  • G1 … LED の G (緑)部分を点灯させるかの信号を出す (セクション上段)
  • G2 … LED の G (緑)部分を点灯させるかの信号を出す (セクション下段)
  • B1 … LED の B (青)部分を点灯させるかの信号を出す (セクション上段)
  • B2 … LED の B (青)部分を点灯させるかの信号を出す (セクション下段)
  • A・B・C・D・E … データを送り込むセクションの場所を決める (5Bit/32通り)
  • clock (CLK) … 信号を送信するごとのクロック (らしい)
  • strobe (LAT or STB) … これでLEDが光る・表記がLAT・STBとあるらしい
  • OE- … 画面表示有効のフラグらしい
  • GND … グランド

って感じらしい…?

ラズパイ側接続図

太字(水色背景)がジャンパ線を接続するピンです(かなりややこしいので注意・配線を間違えると変な映像しか出なくなります)
※ピンの(括弧)内はラズパイのピンの種類です
※ピン10の E ですが、64×64 の LED パネルでのみ使われているピンらしく、64×32 のパネルの場合は省略して問題ないらしい(わからん)

接続先 ピン ピン 接続先
1(3.3V) 2(5V)
3(GPIO) 4(5V)
5(GPIO) 6(GND) GND
strobe 7(GPIO) 8(GPIO)
9(GND) 10(GPIO) E
clock 11(GPIO) 12(GPIO) OE-
G1 13(GPIO) 14(GND)
A 15(GPIO) 16(GPIO) B
17(3.3V) 18(GPIO) C
B2 19(GPIO) 20(GND)
G2 21(GPIO) 22(GPIO) D
R1 23(GPIO) 24(GPIO) R2
25(GND) 26(GPIO) B1
27(ID_SD) 28(ID_SC)
29(GPIO) 30(GND)
31(GPIO) 32(GPIO)
33(GPIO) 34(GND)
35(GPIO) 36(GPIO)
37(GPIO) 38(GPIO)
39(GND) 40(GPIO)

接続ケーブル側接続図

必ずケーブルの赤いラインが引いてある方を上にして接続して下さい!(上下逆にして接続して3日くらい詰んだことがあります)

接続ケーブルと LED パネル側の端子はピンが左右反転しています!注意してください…
下の表は接続ケーブル用なので、LED パネル側の端子に直接接続させる場合は左右反転させて読み替えてください(別途ジャンパーワイヤ(メス―メス)が必要です)

太字がジャンパ線を接続するピンです(ほぼ全て接続します)
ピンの(括弧)内は LED パネル側のピンの種類です(何故か表記が合ってなかったりしますがこれで行けているのでおそらく大丈夫…)
また、ピンの表記は私の購入したパネルでの表記なので、例えば STB が LAT だったり、D が何故か GND になってたりしますが、適宜読み替えてください

接続先 ピン ピン 接続先
G1 1(G1) 2(R1) R1
GND 3(GND) 4(B1) B1
G2 5(G2) 6(R2) R2
E 7(E) 8(B2) B2
B 9(B) 10(A) A
D 11(GND) 12(C) C
strobe 13(LAT) 14(CLK) clock
 – 15(GND) 16(OE) OE-

写真はこちら

LEDパネル側端子

ソフトの導入

※ラズパイのセットアップは書いてたらきりがないので飛ばします

  • rpi-rgb-led-matrix(最重要ソフト・これのお陰でラズパイ上でLEDマトリクスを制御する事ができる)
    • 後述の LED で動画を流すためのソフトはこのソフト(ライブラリ)を組み込んでビルドする
    • 他にも Python からライブラリを利用するための Python ライブラリもあるので、Python が分かる方は楽しめると思います
  • Python(取りあえず入れといた方がよさげ・多分プリイン済み)
  • gcc/g++(ビルド用ソフト・多分プリイン済み)
  • make(ビルド用ソフト・多分プリイン済み)
  • git(バージョン管理ソフト・後で使う・多分プリイン済み)
  • OpenCV(動画再生ライブラリ・後述のビルドで必須)
  • SDL(音声再生ライブラリ・後述のビルドで必須)
  • ffmpeg(動画変換ソフト・LED-Movie-Convert で使用)

あたりが必要みたいです

OpenCV・SDL の導入

上記のうち、OpenCV と SDL のインストール・ビルドにかなり難儀した(エラーでビルドが止まる)のですが、結局 apt のパッケージで入れようという結論に…

いつもお馴染みターミナル(または SSH )から、利用する OpenCV・SDL ライブラリを apt でインストールしておきます。

もしかすると、OpenCV 関連は OpenCV 2.4 でないと動かないかもしれません
2019年4月現在、apt でインストールできる OpenCV は 2.4 のままですが、もし上手く行かない場合はビルドするか過去バージョンのパッケージをインストールしてください(適当)

おまじないとしてちゃんと

sudo apt update && sudo apt upgrade

してから、

sudo apt install libopencv-dev libsdl1.2-dev libsdl2-dev libsdl-mixer1.2-dev libsdl2-mixer-dev ffmpeg 

と実行します

rpi-rgb-led-matrix の導入

以下の通りに実行して rpi-rgb-led-matrix をダウンロード、ビルドします

cd ~/
git clone https://github.com/hzeller/rpi-rgb-led-matrix.git
cd rpi-rgb-led-matrix
make
make install-python

ビルドには少し時間がかかります
実行すると、rpi-rgb-led-matrix は /home/pi/rpi-rgb-led-matrix/ 以下にインストールされます

ビルドが完了すると、examples-api-use ディレクトリにサンプルプログラムが色々置いてあるので、動くかテストしてみましょう

sudo ~/rpi-rgb-led-matrix/examples-api-use/demo -D 0 --led-rows=64 --led-cols=64 --led-chain=2 --led-no-hardware-pulse

これで正しく虹色の正方形がぐるぐる回転していれば正常です

他にも、公式ドキュメント(Google 翻訳してます)より、

-Dで選択されたデモ
         0  - 回転する正方形
         1  - 画像を前方にスクロールする(-m <スクロール-ミリ秒>)
         2  - 画像を後方にスクロールする(-m <スクロール-ミリ秒>)
         3  - テスト画像:正方形
         4  - パルスカラー
         5  - グレースケールブロック
         6  - アーベリアン砂山モデル(-m <タイムステップ-ミリ秒>)
         7  - コンウェイの人生のゲーム(-m <タイムステップ-ミリ秒>)
         8  - ラングトンのアリ(-m <タイムステップ-ミリ秒>)
         9  - ボリュームバー(-m <タイムステップ-ミリ秒>)
         10 - 色の進化(-m <タイムステップ-ミリ秒>)
         11 - 輝度パルス発生器

のようなデモがあるので、色々遊んでみましょう
翻訳しても意味がちょっとよくわかりませんが、やってみれば大体分かるはず…?
(1・2番はコマンドの末尾に ~/rpi-rgb-led-matrix/examples-api-use/runtext.ppm (流す用のデータが入っているファイル)を設定する必要があります)

  • 全く LED が点かない
  • 一部が欠ける
  • よくわかんない乱れた映像が流れる

場合はほぼ100%配線を間違えているので、配線をやり直しましょう
ちゃんと表示された事を確認して、本番の LED パネルでの動画再生ソフトのビルドへ移ります

LED-Movie-Player の導入

LED-Movie-Player は、こちらの記事に書かれていたコードを元に、ループ再生や詳細なオプションを指定できるようにして実用に堪えるように改造した RaspberryPi 上で LED マトリクスパネルに動画を流す事が出来る CUI アプリケーションです
色々面倒なので GitHub に置いておきます(元が C++ だったので C++ で書いたけど他の言語より段違いに難しくてとてもつらかった)
適当に GitHub から clone してください

追記:かなり無理矢理に作り上げたソフトなので、私以外の環境で動くかどうかはかなり微妙…
お世辞にも出来のいいものではありませんが、もし使えるなら使ってください
git clone https://github.com/tsukumijima/LED-Movie-Player

その後、submodule を init してからビルドします
ビルド途中でエラーが出た場合、ライブラリのインストールに失敗している可能性が高いです…

cd LED-Movie-Player
git submodule init
make && sudo make install

sudo make install を実行すると LED-Movie-Player と LED-Movie-Convert がパスの通った場所にインストールされますが、実行権限が付与されていないことがあるので、

sudo chmod 755 /usr/local/bin/led-movie-player
sudo chmod 755 /usr/local/bin/led-movie-convert

と実行し、LED-Movie-Player と LED-Movie-Convert に実行権限を付与しておきましょう

ラズパイのデフォルトサウンドカードを無効にする

前述の通り、rpi-rgb-led-matrix(と LED-Movie-Player )では、ラズパイの bcm2835 内蔵サウンドカードを無効化し、USB サウンドカードを使う事が推奨されます
ただ USB サウンドカードをラズパイに刺しただけでは無効化されないので、一部設定を行う必要があります

sudo nano /boot/config.txt

/boot/config.txt を開き、dtparam=audio=on の箇所を dtparam=audio=off に書き換えます
さらに

cat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf
blacklist snd_bcm2835
EOF

sudo update-initramfs -u

と実行し、bcm2835 サウンドカードを無効化します
次に、

cd ~
sudo nano /usr/share/alsa/alsa.conf

と実行し、Alsa の設定ファイルを編集します

defaults.ctl.card 0
defaults.pcm.card 0

の箇所を

defaults.ctl.card 1
defaults.pcm.card 1

に書き換え、

sudo reboot

最後に再起動します
これで、ハードウェアパルスを使えるようになるはずです
もし後述する LED-Movie-Player での再生時にエラーが出る場合は、led-movie-player.cc 内の

options.disable_hardware_pulsing = false;

の箇所を、

options.disable_hardware_pulsing = true;

にして、

make && sudo make install

と実行してビルドし、一度ハードウェアパルスを使わないモードで再生できるか確認してみて下さい

余談

先程のデモのコマンドにあった –led-no-hardware-pulse ですが、ハードウェアパルスが使えるようになったので

sudo ~/rpi-rgb-led-matrix/examples-api-use/demo -D 0 --led-rows=64 --led-cols=64 --led-chain=2

のように取ってしまっても構いません
–led-no-hardware-pulse を付けない方がちらつきがなく綺麗に描画されます

 LED パネルで動画を再生する

動画を変換する

詳しくは LED-Movie-Player の README を読んでいただきたいのですが、LED パネルで動画を再生する場合、予め指定のフォーマットにした .mp4 形式・.mp3 形式のファイルを用意する必要があります
ffmpeg で変換するのが楽ですが、それでも手順としては少し面倒です

LED-Movie-Player に同梱されている LED-Movie-Convert というバッチファイルを使うと、YouTube 等の動画サイトの URL かローカルのファイルのパスを入力するだけで、自動で指定フォーマットへのエンコードと /home/pi/movieplayer/ への配置を行う事ができます

例えば、YouTube等の動画を LED 用に変換するなら、

led-movie-convert (動画のURL) download auto false

とすれば一発でできます (最後の false を true にすると彩度とコントラストを上げて変換します・アニメとかは彩度上げたほうが綺麗に写ります)

led-movie-convert (動画のURL) download "Nantoka_DOUGA" false

第三引数が auto の場合、動画のタイトルを自動でファイル名にします、auto の部分を拡張子なしファイル名にするとそのファイル名で変換・保存されます

ローカルのファイルを変換する場合は、

led-movie-convert /home/pi/test.mp4 file auto false

としてください

led-movie-convert /home/pi/test.mp4 file "Nantoka_DOUGA" false

第三引数が auto の場合、元ファイルのファイル名を自動でファイル名にします、auto の部分を拡張子なしファイル名にするとそのファイル名で変換・保存されます

変換した動画を再生する

sudo led-movie-player "[先程変換したファイルの拡張子なしファイル名]"

と実行すると、LED パネルで動画が再生出来るはずです(最初やったときは感動しました…)

sudo led-movie-player "[先程変換したファイルの拡張子なしファイル名]" 0

と実行すると、動画を無限ループで再生します

sudo led-movie-player "[先程変換したファイルの拡張子なしファイル名]" [ループ回数]

と実行すると、動画をループさせて再生します

sudo led-movie-player "[先程変換したファイルの拡張子なしファイル名]" 0 [LEDパネルの横のピクセル数] [LEDパネルの縦のピクセル数] [LEDパネルの直列接続数] [LEDパネルの並列接続数] 

と実行すると、パネルのサイズを個別に指定できます

また、ハードウェアパルスを有効にしてUSBサウンドカードから音声を再生している場合、

ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred

のようなエラーが出ることがありますが、普通に再生出来ているので大丈夫だと思います

Alsa が若干処理に失敗した時に出るエラーらしい(音飛びもしてないし何が悪さしてるのかわからん)

あとがき

ちゃんと動画は再生できたでしょうか…?
rpi-rgb-led-matrix には他にも面白いデモソフトが色々入っているので、これ以外にも色々あそべると思います

日本語の情報がない中かなり試行錯誤してかなり大変でした…
この記事が誰かの役に立てば幸いです(何ヶ月も放置していると手順を忘れるので備忘録が主ですが…)

コメント

  1. この記事を参考にさせていただき無事動画を再生させることができました
    ありがとう御座います
    その過程でいくつかエラーが出たので
    解決した方法を一応載せておきます。
    LED-Movie-Player の導入
    自分はここで
    cd LED-Movie-Player
    make && sudo make install
    をしたときにled-matrix.hがないというエラーが出ました。
    解決策としての/home/pi/rpi-rgb-led-matrix/includeの中身を/home/pi/LED-Movie-Playerにぶち込みました。
    次にエラーが出たのは
    led-movie-convert (動画のURL) download auto false
    を実行したときに権限がありませんと出ました
    解決策としてsudo をつけて実行してみるも失敗
    そこでsudo su rootで権限を付与しchmod 777 /usr/local/bin/led-movie-convertで
    パーミッション変更をすることで解決しました
    ついでにled-movie-playerもパーミッションを変更しました
    ちなみに私はUSBサウンドカードを買っていなかったので
    記事にある
    options.disable_hardware_pulsing = false;
    の箇所を、
    options.disable_hardware_pulsing = true;
    にして、
    make && sudo make install
    で無事再生できました。

    長文失礼しました
    改めて素晴らしいソフトを作ってくださった主に感謝申し上げます
    ありがとうございます。

    • いえいえ、ちゃんと再生できたようで何よりです…(他の環境で動くかどうか心配でした…)
      私は Qiita に貼ってあったプログラムをループ対応させただけなので大したことはしてません… 私だけではまず無理でした。
      記事に書くのを失念していましたが、led-matrix.hがないエラーはおそらく LED-Movie-Player で使っている submodule (rpi-rgb-led-matrix) がダウンロードできていないことによるものです
      led-movie-player ディレクトリに移動したあと、git submodule init と実行すると submodule がダウンロードされるので、正常にビルドできるようになるはずです。
      実行権限の件についても書き忘れていました… 追記しておきます。

  2. こちらのブログをもとに動画を再生しましたが、ラズパイ4のバージョンでは画面が乱れてしまいます。
    –led-slowdown-gpio= を追加すれば良いということはわかっているのですが、led-movie-player.ccのどこに追加すれば良いでしょうか?

    画像等は実行するときに書き加えればよかったのですが、動画を再生するときには書き加えて実行しても意味がありませんでした。教えていただけると幸いです。

    • 私も随分前に作って以来放置していてさらに C++ は全然わからないのでなんともいえないですが、コードを読む限り options.disable_hardware_pulsing = false; とは異なり、–led-slowdown-gpio フラグは RuntimeOption という構造体で実装されているみたいです(なぜ分けたし…)。
      example-api-use の各コマンドのソースコードを見ると LED-Movie-Player で使っている RGBMatrix *matrix = new RGBMatrix(&io, options); ではなく RGBMatrix *matrix = RGBMatrix::CreateFromOptions(matrix_options, runtime_opt); のように初期化されているので、CreateFromOptions に RGBMatrix::Options と rgb_matrix::RuntimeOptions を指定してあげて RGBMatrix を初期化するといけるんじゃないかなーと思ってます(ラズパイと C++ 自体を長らく触っていないので頓珍漢かも)
      RuntimeOption 構造体の参考: https://github.com/hzeller/rpi-rgb-led-matrix/blob/master/include/led-matrix.h#L395
      GitHub でコード検索すると色々捗ると思います。説明になってなくてすみません…

  3. あくまで推測ですが、こんな感じで書き換えるといけるかも…?

    
        // LEDパネルのパラメータをRGBMatrix::Optionsに設定
        RGBMatrix::Options matrix_options;
        matrix_options.rows = rows;
        matrix_options.cols = cols;
        matrix_options.chain_length = chain;
        matrix_options.parallel = parallel;
        // ハードウェアパルス生成を無効にする
        // この値を false にしてハードウェアパルス生成を有効にする場合、
        // ラズパイに載っている音声モジュールを無効にする必要がある
        // この値を true にしてハードウェアパルス生成を無効にする場合、
        // 画面にちらつきが出る事があるので非推奨らしい
        matrix_options.disable_hardware_pulsing = false;
    
        // GPIO関連のパラメータをrgb_matrix::RuntimeOptionsに設定
        rgb_matrix::RuntimeOptions runtime_options;
        runtime_options.gpio_slowdown = 4;
    
        // 音声の読み込み
    
        SDL_Init(SDL_INIT_AUDIO); // SDLを初期化
        Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096); // ミキサーAPIを初期化・音声ファイルのサンプルレートと第一引数が異なると音ズレする
        Mix_Music *music = Mix_LoadMUS(audio_file.c_str()); // 音声ファイルをロード
        if (!music)
            return 1;
    
        // LEDマトリクスの初期化
    
        RGBMatrix *matrix = RGBMatrix::CreateFromOptions(matrix_options, runtime_options); // RGBMatrixを初期化
        matrix->set_luminance_correct(true);
        matrix->SetBrightness(100);
        matrix->SetPWMBits(11);
        FrameCanvas *canvas = matrix->CreateFrameCanvas(); // 描画Canvasを初期化
        const int width = canvas->width();
        const int height = canvas->height();
    
  4. 遅くなってしまい申し訳ありませんでした、お返事いただきありがとうございます。
    教えていただいたとおりに書き換えて make したところ

    g++ -Imatrix/include -std=c++11 -c -o led-movie-player.o led-movie-player.cc
    led-movie-player.cc: In function ‘int play(std::__cxx11::string, std::__cxx11::string, int, int, int, int)’:
    led-movie-player.cc:58:36: error: ‘CreateFromOptions’ is not a member of ‘rgb_matrix::RGBMatrix’
    RGBMatrix *matrix = RGBMatrix::CreateFromOptions(matrix_options, runtime_options); // RGBMatrixを初期化
    ^~~~~~~~~~~~~~~~~
    led-movie-player.cc:139:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
    make: *** [Makefile:22: led-movie-player.o] エラー 1

    このようなエラーが出てきました、私も素人なのでよくわからないですが試行錯誤やってみようと思います。
    丁寧に教えていただきありがとうございました!

  5. デモを実行しても写真を表示してもエラーは出ないのですが、右端に青と黄色の縦線が一本入るだけです。
    配線は確認済みです。
    どうすればいいですか?

    • 随分前にやったものですし、それだけの症状ではわかりません。
      やはり配線を確認するしかないと思います。それでもダメなら LED パネルの相性かもしれません。

      • そうですか。
        相性の可能性も大きいかもしれません。
        ありがとうございます。

  6. こちらのページを参考にして、無事動画を再生することができました!
    一つ質問なのですが、私はこのページにある64*64を2枚の縦1横2ではなく、32*64の2枚で縦1横4の比率で行ったのですが、動画が縦1横2に縮小してしまいます。

    Player.ccのどこかで動画の出力の比率が決まっているのでしょうか?
    教えていただけると幸いです(´;ω;`)

    • そもそも一般的な動画は 16:9 、つまりほぼ 2:1 の比率なので、普通の動画を再生したのなら 2:1 になるのはむしろ当たり前だと思います。変に横長に伸びても違和感出るだけですし。
      私が 64×64 のパネルを敢えて選択したのはそこで、ほぼ 2:1 の動画を再生するのなら 128×64 の方が解像度が高くて良く見えるからです。128×32 の解像度だとそういった動画は解像度が低くて描画できてもかなり荒いと思います。128×64 でも結構荒いのに…
      もしパネルをフルで使う動画を再生させたいのなら、動画編集ソフトなどで予め 4:1 の比率にクロップするなどした動画を作っておくことになると思います。

  7. 返信誠にありがとうございます。
    1:4の動画を作成して再生したところ、横が1/2に縮められて出力した形になります。
    かなり前のことだと思いますので、思い当たる節がないかも知れませんが、助言いただけると幸いです。

    • あーそっちですか…。
      既にやられているとは思うのですが、個々の LED パネルの縦幅・横幅を誤って設定していたりはしませんか?
      ソースコード上でも cols = 64; のように指定されている箇所があるので(毎回打つのめんどくさいし)、そのあたりを変えてみたら、もしかすると変化があるかもしれません。
      あとは 4:1 の比率の動画はかなりイレギュラーなので、OpenCV が対応していないだとかの可能性もあります。
      いずれにせよ、現状動かせる状況になく詳しいことは分かりません。お役に立てずすみません…

      • おっしゃる通りで、理解できる範囲の数字は何通りか試してみたのですが、なかなくなくいかず、行き詰まってしまったのです。

        なるほど、参考になります!

        対応ありがとうございました!このページも本当にとても役に立ちました!