LoginSignup
11
16

More than 5 years have passed since last update.

Raspberry Piでデジタルサイネージを作る

Last updated at Posted at 2017-03-22
1 / 2

HDMI液晶に映すサイネージをつくる

  • HDMIで出力
  • 24時間365日動作
  • GPIOと連動

ナゼ Rasbperry Pi か

  • iPadとか使ってみる -- 知らない間に止まる!
  • DVDプレーヤーでいいんじゃない? -- GPIOでトリガーかけたい
  • PCでマルチ画面だと? -- 既存システムはコストが高い。 -- 安定性が・・・

クラスタシステム

  • Rasbperry Pi 10台以上

IMG_20141107_033752.jpg

液晶を用意

液晶は中華から密輸

液晶形式

  • 資料によると、MIPIとLVDSがあるらしい。
  • でも2017年2月時点では、ほとんどEDPだった
  • EDPは30ピン
  • EDPは何チャンネルか、何ボルトなどのバリエーションもある。

HDMIコントローラ

  • 液晶にあわせて密輸します。
  • プロファイルを書き込んでから出荷してもらう
  • 注文時に、どのモデルを使うよ、と連絡
  • LEDバックライトコントローラならば調光出来る

安定性のために

電源回路基板をつける

IMG_20141104_091147.jpg

処理を軽く

  • RaspberryPiはH.264動画支援再生がある
  • ハードウェア動画再生支援機能を使う

Xを使わない

  • コンソール画面で
  • フレームバッファモード
  • vlcとかもフレームバッファモードがある

コマンドで再生

/opt/vc/src/hello_pi/hello_video/hello_video.bin

がh.264再生

スクリプトでGPIO連動

#!/usr/bin/env python3
import wiringpi2 as w
import time
import os
w.wiringPiSetup()
w.pinMode(0, 0)
w.pullUpDnControl(0, 2) 
while 1:
  state = w.digitalRead(2)  
  print (state) 
  time.sleep(0.1)
  if ( 0 == state ):
#    os.system("omxplayer /home/pi/hxtree/contents.mp4 -o local")
    os.system("/opt/vc/src/hello_pi/hello_video/hello_video.bin /home/pi/hxtree/contents.h264")
    time.sleep(30)

無限ループ

用途に応じて書き換えて無限ループするようにもした

/opt/vc/src/hello_pi/hello_video/hello_video_sheemless.bin /home/pi/hxtree/contents.h264

コンテンツ

結構相性がある

avidemuxを使ってH.264を使う

フリーのトランスコーディングソフトとしてavidemuxを

Ubuntu 16.04にインストールして使う。

# apt install avidemux
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ avidemux は、以下によって提供される仮想パッケージです:
  avidemux2.6-qt 1:2.6.16-1~getdeb1
  avidemux2.6-cli 1:2.6.16-1~getdeb1
インストールするには、明示的にいずれかを選択する必要があります。

E: パッケージ 'avidemux' にはインストール候補がありません

ということで、

apt install avidemux2.6-qt

としてインストールした

映像を作る

avidemuxの変換パラメータ


1. Video Output → Mpeg4 AVC (x264)
2. Video Output → Configure → General  → Encoding Mode → Constant Quantiser (Single Pass)  → Quantizer → 5に設定  → OK
3. Output Format → Video Only

オーディオ

音声は映像とは別個に再生した。
alsamixerで音量を制御。
amixer cset numid=3 2 でhdmiの指定
だが出なかったので
amixer cset numid=3 1 で内蔵。

音声テスト

aplay /usr/share/sounds/alsa/Rear_Right.wav
でテスト。
ln -s /media/usb/contents.wav contents.wav
としてリンクを作り、

#!/bin/sh
amixer master 100:100 &
amixer pcm 100:100 &
amixer cset numid=3 1 &
while [ 1 ]
do
aplay /home/pi/hxtree/contents.wav
done
# chmod 777 loopaudio.

元VIDEOを加工

ブランクを追加したい

ffmpeg -r 0.1 -i black.jpg   video.avi

とすると、10秒が出来たがブランク部分1コマしか無い。

ffmpeg -loop 1 -r 29.98 -i black.jpg -t 10.000 -vcodec libx264  black.avi

でできた。

連結

avidemuxだとうまく連結できなかったので、ffmpegで連結。
これは音声を抜いて連結する方法。

ffmpeg -i 03-003.mp4 -i black.avi -filter_complex "concat=n=2:v=1:a=0" -an output.mp4

一旦コレで作っておいて、avidemuxでh.264に。

細かい設定

起動メッセージが出ないようにする。


# cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait logo.nologo

HDMIでフルスクリーン

hdmi_force_hotplug=1

disable_overscan=1

#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

framebuffer_width=1280
framebuffer_height=800


hdmi_group=2
hdmi_mode=28

# USBにコンテンツを置く

ln -s /media/usb/contents.wav contents.wav
としてリンクを作り、
touch loopaudio.sh
chmod 777 loopaudio.sh
vim loopaudio.sh


#!/bin/sh
amixer master 100:100 &
amixer pcm 100:100 &
amixer cset numid=3 1 &
while [ 1 ]
do
aplay /home/pi/hxtree/contents.wav
done


sudo bash
vim /etc/rc.local
/home/pi/hxtree/loopaudio.sh &
を追加


# vim /boot/config.txt

framebuffer_width=1920
framebuffer_height=1080
```

に変更したよ。

hdmi_group=2
hdmi_mode=28

もコメントアウト。
/etc/kbd/config

BLANK_TIME=30
POWERDOWN_TIME=30
をそれぞれ0に

巨大クリスマスができました

IMG_20141107_042622.jpg

11
16
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
11
16