2013年5月9日木曜日

hdmi ディスプレイの設定と動画の再生

家庭用のテレビをディスプレイ代わりに使っている。
ディスプレイの設定をするコントロールパネルのようなものがあるのだが、このテレビは情報を取得できるようになっていないらしく、表示ピクセル数などを設定することができない。
Raspberry Pi は、フル HD のビデオ信号を出力しているのだが、このテレビは残念ながら1080p のフル HD には対応していない。
そのため、画面がたいへん見づらい。
ディスプレイの設定は /boot/config.txt に書かれていることがわかったので、それを修正してみる。
config.txt の最初に次の行を追加した。
disable_overscan=1
framebuffer_width=1024
framebuffer_height=768

width と height を SVGA サイズにしてみる。
rasp-config で Overscan を disable にしてあると、自動的に「disable_overscan=1」になっているはず。
これで reboot する。

次に、動画再生の実験を行う。
「/opt/vc/src/hello_pi/hello_video」に動画再生のプログラムがあるのでこれを実行してみる。
まず、/opt/vc/src/hello_pi で、libs を make しておく。
$ make -C libs/ilclient
$ make -C libs/vgfont

次に、/opt/vc/src/hello_pi/hello_video に移動して、サンプルブログラムを make して実行。
$ cd hello_video/
$ make
$ ./hello_video.bin test.h264

フル画面でアニメが表示される。config.txt の設定は無視されている。


Raspberry Pi Video Loop に書かれているループ再生をやってみる。
video.c を修正する。
<修正前>
if(!data_len)
    break;
<修正後>
if(!data_len)
    fseek(in, 0, SEEK_SET);

make して実行。
$ make
$ ./hello_video.bin test.h264

途切れなく、繰り返しアニメが表示される。

ちなみに、なぜか再生できない mp4 ファイルは、次のコマンドで変換する。
ffmpeg は、Raspberry Pi にはインストールされていない。処理に時間がかかるので、他のマシンにインストールして変換した方が良い。mac では MacPorts でインストールできる。
$ ffmpeg -i can_not_play.mp4 out.h264


起動時に、自動的に動画を再生するように設定してみる。
これも Raspberry Pi Video Loop に書かれている。
cron の @reboot マクロを使用する。
先ほどの /opt/vc/src/hello_pi/hello_video にある test.h264 を起動時に再生するように cron を設定する。
次のコマンドで cron を編集する。
$ crontab -e

これを追加する。
@reboot /opt/vc/src/hello_pi/hello_video/hello_video.bin /opt/vc/src/hello_pi/hello_video/test.h264

そして、reboot。
$ sudo reboot

起動後に、動画が再生される。

0 件のコメント:

コメントを投稿