( https://qiita.com/cstoku/items/eb17d111225d3e35ec61 の
- led-movie-player … Raspberry Pi 3 B+
上 でビルドした実行 ファイル基本 的 に Linux では実行 ファイルに拡張子 が付 きません- Raspberry Pi 3 B+ にてビルドしています
他 の機種 では動 かないかもしれません・自 ビルドする事 を推奨 します(後述 )
- led-movie-player.cc … ソース( C++ )ファイル
表示 ・再生 部分 のコードを前述 の記事 よりお借 りしています
- led-movie-convert … YouTube
等 の動画 やラズパイ上 の動画 を変換 して LED-Movie-Player で再生 出来 る形式 にするソフト中身 はバッチファイルです(後述 )
- Makefile … ビルド
手順 等 を記述 したスクリプトファイル - README.md … このファイル
- sample/ … LEDで
流 せるサイズにエンコードしたサンプルの mp4 と mp3 を入 れてあります再生 させる場合 は一式 /home/pi/movieplayer/ にコピーして下 さい
- matrix/ … rpi-rgb-lex-matrix を submodule として
使 っています
予 め必要 なパッケージ(ライブラリ)をインストールしておきましょうsudo apt update -y && sudo apt upgrade -y
sudo apt install -y python3 python3-pip ffmpeg gcc g++ make libopencv-dev libsdl1.2-dev libsdl2-dev libsdl-mixer1.2-dev libsdl2-mixer-dev
sudo pip3 install youtube-dl
- led-movie-player ディレクトリに
移動 したあと、git submodule init
git submodule update
- と
実行 すると submodule がダウンロードされるので、正常 にビルドできるようになるはずです。
- make でビルドします
make
- ビルドに
失敗 する場合 、ライブラリがうまくインストール出来 ていない可能 性 があります
- make install でパスの
通 った場所 にインストールしますsudo make install
- ちゃんと sudo をつけましょう
- その
他 、デフォルトではラズパイの bcm2835 サウンドカードを無効 化 する必要 があります(ハードウェアパルスの生成 に必要 なため)- そのため、
別途 USB サウンドカードを購入 し、USB サウンドカードで再生 できる(ラズパイ内蔵 サウンドカードを使 わない)状態 にする必要 があります - ハードウェアパルスを
生成 せずソフトウェアパルスで再生 する事 も可能 ですが、ちらつきが発生 するため非 推奨 です- ハードウェアパルスを
無効 化 して再生 させたい場合 は、led-movie-player.cc中 の options.disable_hardware_pulsing = false; を options.disable_hardware_pulsing = true; に書 き換 え、もう一度 ビルドしてください
- ハードウェアパルスを
詳細 な手順 は こちら の項目 に記載 してあります、参考 にしてください
- そのため、
動画 は最大 192 × 108 までにリサイズした .mp4形式 、音声 はサンプリングレート 44100kHz にした .mp3形式 にし、同 じファイル名 で /home/pi/movieplayer/ に保存 します- LED-Movie-Convert を
使 うと、動画 ・音声 の変換 を自動 化 できます - /home/pi/movieplayer/
以外 に置 くことも可能 ですが、その場合 は led-movie-player.cc ソース内 の記述 を変更 してください
- LED-Movie-Convert を
- sudo led-movie-player "[
拡張子 なしファイル名 ]" と入力 して実行 すると、再生 できます拡張子 なしファイル名 は、予 め /home/pi/movieplayer/ に置 いてあるファイルのものにしてください例 えば /home/pi/movieplayer/ に example.mp4 と example.mp3 を置 いた場合 、[拡張子 なしファイル名 ] には "example" を入 れます- ファイル
名 にスペースが含 まれる場合 は、"example video" のように必 ず "" で囲 うようにしてください
- sudo をつけないとエラーになります、
必 ず sudo をつけて root で実行 してください 最後 のコマンド以外 はデフォルトで 64 × 64 パネルを 2個 直列 に接続 している事 を想定 して再生 します解像度 が異 なるパネルの場合 は、led-movie-player.cc ソース内 の記述 ( 155行 目 あたり)を変更 してください
- sudo led-movie-player "[
拡張子 なしファイル名 ]" 0 と入力 して実行 すると、無限 ループで再生 します - sudo led-movie-player "[
拡張子 なしファイル名 ]" [ ループ回数 ] と入力 して実行 すると、引数 に記載 された回数 だけ有限 ループで再生 します - sudo led-movie-player "[
拡張子 なしファイル名 ]" [ ループ回数 ] [ LED パネルの縦 幅 ] [ LED パネルの横 幅 ] [ LED パネルの直列 接続 数 ] [ LED パネルの並列 接続 数 ] と入力 して実行 すると、引数 に記載 されたパラメータで再生 を実行 します
- Ctrl+C を
押 すと中断 できます
基本 :sudo led-movie-player "example"無限 ループ:sudo led-movie-player "example" 0有限 ループ:sudo led-movie-player "example" 15引数 を全 て指定 :sudo led-movie-player "example" 1 64 64 2 1
- 64 × 64 のパネルを 2
個 直列 につないだ LED パネルを想定 しています他 の解像度 のパネルでは動 かないかもしれません
動作 確認 は Raspberry Pi 3 B+上 の Raspbian で行 っています- もしかすると、
他 のラズパイではそのままのコードでは動 かない、という事 があるかもしれません
- もしかすると、
- コマンドラインから
実行 します( GUI はありません)- ラズパイ
自体 が非力 なため、GUI があるとかえって描画 が重 くなります
- ラズパイ
- ろくに
検証 もしていない自分 用 ソフトです他 の環境 で動 くかはかなり微妙 … - ソースに
変更 を加 えた場合 、当然 ですが再度 ビルドしないと変更 は反映 されません - たまに Ctrl+C を
押 しても動画 が流 れ続 ける場合 があります(プロセスが裏 で動 きっぱなしになる)- その
場合 は、ps aux | grep "led-movie-player.*" | grep -v grep | awk '{ print "sudo kill -9", $2 }' | sh
と実行 すると LED-Movie-Player を強制 終了 できます
- その
動画 - .mp4
形式 最大 でも 192 × 108 にリサイズする- 720p とかの
動画 をそのまま突 っ込 むと重 すぎてスロー再生 状態 になります - 160 × 90 の
方 が音 ズレしません- 192 × 108 はギリギリです
- 720p とかの
音声 は mp3 から再生 するのであってもなくても可
- .mp4
音声 - .mp3
形式 - ビットレートを128kbpsにする
- 192kbps とかでもいけるかもしれませんが
一応
- 192kbps とかでもいけるかもしれませんが
- サンプルレートを
必 ず44100kHz にする- 48000
kHz だと音 がバグる…
- 48000
- .mp3
LED-Movie-Convert を
- バッチファイルです (パスの
通 った場所 に置 けばコマンド同様 に実行 できます) - sudo make installする
際 についででパスの通 った場所 にインストールされます - ラズパイのスペックが
低 い関係 でエンコードに時間 がかかります、気長 に待 ちましょう - エンコード
中 は負荷 が非常 に高 くなるので、エンコード中 に LED-Movie-Player で再生 させようとするとスロー再生 になってしまう事 があります- (ラズパイの
性能 が低 いため LED パネルへの表示 処理 が実際 の再生 スピードに追 い付 かない)
- (ラズパイの
第 一 引数 … ソース元 を指定 します ( URL or ファイルパス)第 二 引数 … ソースの種類 を選択 します ( URL からダウンロードするなら download 、ファイルパスからなら file )第 三 引数 … ファイル名 を設定 します (ファイル名 を動画 名 or ファイル名 から取 るなら auto 、それ以外 なら拡張子 なしのファイル名 を入 れる)第 四 引数 …彩 度 とコントラストを上 げるかどうか(上 げるなら true・上 げないなら false )- アニメなど、
彩 度 ・コントラストの低 い動画 は上 げたほうがより鮮明 に、より綺麗 に再生 できます
- アニメなど、
第 五 引数 (オプション)…動画 の横 幅 を指定 (例 : 160 )第 六 引数 (オプション)…動画 の高 さを指定 (例 : 90 )
- YouTube
等 からダウンロードする場合 - led-movie-convert https://www.youtube.com/watch?v=xxxxxxxxx download auto false
- led-movie-convert https://www.youtube.com/watch?v=xxxxxxxxx download auto true
- led-movie-convert https://www.youtube.com/watch?v=xxxxxxxxx download "Some Videos" false
- led-movie-convert https://www.youtube.com/watch?v=xxxxxxxxx download "Some Videos" true
- led-movie-convert https://www.youtube.com/watch?v=xxxxxxxxx download "Some Videos" false 192 108
- led-movie-convert https://www.youtube.com/watch?v=xxxxxxxxx download "Some Videos" true 192 108
- ローカルファイルから
変換 する場合 - led-movie-convert "/home/pi/example video.mp4" file auto false
- led-movie-convert "/home/pi/example video.mp4" file auto true
- led-movie-convert "/home/pi/example video.mp4" file "example" false
- led-movie-convert "/home/pi/example video.mp4" file "example" true
- led-movie-convert "/home/pi/example video.mp4" file "example" false 160 90
- led-movie-convert "/home/pi/example video.mp4" file "example" true 160 90
(