Raspberry Pi obconf アップデート

以前の記事でダウングレードしたopenboxですが本日updateをかけたところobconfがアップデートされていました。
間違いなくopenbox絡みだろうということで保留を解除、実行してみました。

折角なので続きということで記事にしてみたいと思います。

update && upgrade

$ sudo apt update && sudo apt upgrade
続行しますか? [Y/n] n
中断しました。
$ sudo -i
# apt-mark unhold libobrender32v5 libobt2v5 openbox
# apt update && apt upgrade


一旦中断して保留を解除
(あとから解除、再度実行でもいいのですが)


openbox 3.6.1-4+rpi9 になっていますね。


obconfは起動しました。

lxappearanceは相変わらずSegmentation faultを吐いています。
原因はわかっているはずなので近い内にupdateが入ると思います。

Raspberry Pi 3 stretch オーバークロック

Raspberry Pi 3が発売されたばかりの頃はcpu動作モードがpowersaveに設定されていて600MHzで動作していました。その後まもなくondemand(1.2G)となってさらに2017年なってからと思いますがcpu温度に対してクロックを制御するようになりました。

オーバークロックといっても通常の環境では1.2G –> 1.3Gが限度で大きな改善は期待できません。(1.35Gでは時々ハングアップします)
体感的には多少キビキビ感が増す程度と思います。

これまでcpu温度に対してのクロック制御をよく理解していなかったので簡単な実験をしてみました。

cpuデフォルト

最初にデフォルトの動作を確認してみます。/boot/config.txtに記載したオーバークロック関係を無効、インストールしたcpufrequtilsをdisableにして起動します。

# systemctl disable cpufrequtils
# reboot


起動後無負荷の状態では600MHzで動作しています。
なにか負荷のかかるアプリケーションを実行すると1200MHzにアップ

適当な動画ファイルをダウンロードffmpegでscaleダウンしてcpu温度とクロック周波数の変動をみます。

$ youtube-dl -f mp4 35LwyGtHbzs
[youtube] 35LwyGtHbzs: Downloading webpage
[youtube] 35LwyGtHbzs: Downloading video info webpage
[youtube] 35LwyGtHbzs: Downloading MPD manifest
[youtube] 35LwyGtHbzs: Downloading MPD manifest
[download] Destination: [HD] 会長はメイド様! _ Kaichō wa Maid-sama [01]-35LwyGtHbzs.mp4
[download] 100% of 177.19MiB in 00:41

ffmpeg -y -vsync 1 -i "[HD] 会長はメイド様! _ Kaichō wa Maid-sama [01]-35LwyGtHbzs.mp4" -s 1024x576 "会長はメイド様_01.mp4"

5分位実行しましたが80℃を超えることはありませんでしたがじわじわと温度は上がっていきます。

ffmpeg実行前
frequency(45)=600062000
temp=49.9’C
volt=1.2000V
ffmpeg実行中
frequency(45)=1200000000
temp=74.1’C
volt=1.2938V

cpuクロックアップ

config.txtにオーバークロック設定をしてcpufrequtilsを有効にします。
現在のPi3 config.txt

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# Overclock the arm
arm_freq=1300
over_voltage=4
sdram_freq=400
core_freq=400
gpu_freq=400

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Enable OpenGL
dtoverlay=vc4-kms-v3d
gpu_mem=256
# systemctl enable cpufrequtils
# reboot

governor “performance”で実行。1〜2分で80℃を超えてきます。

温度上昇に伴って(80℃)クロック周波数も変動(低下)します。
85℃以上になることが無いようにコントロールしているものと思います。
もし何らかの関係で85℃を超えることがあると温度計マークが出てくると思います。

以上から今回のようにcpu使用率100%附近の連続作業ではデフォルト(1.2G)とほぼ変わらないという結果になりました。
1.3Gをキープするには80℃を超えないようにすればいいのですがPiにとって大型の放熱器、強力なファンを設けることは現実的では無いし、また1.3Gの値もそれほどのメリットもありません。
但し通常のアプリケーション(mp4再生など)ではクロックコントロールするほど温度が上がることは無いのでクロックアップによる多少の改善、効果はあるものと思っています。
現在のクロック設定は今回の結果を踏まえarm_freq以外は1ランク下げています。

Aterm WG1200CR

今回mp4再生の設定しているとpiの処理能力以外にもディスクの転送速度やネットワーク速度なども関係することが見えてきました。

これらからIEEE802.11acに対応していない当サイトはpi4に備えてWG1200CRを購入しました。
条件はGigabit Ethernetに対応していること、Rポイント内で買えること。で、これしか選択肢がありませんでした。
接続はブリッジモードでルーターに接続しています。


Pi3からは802.11g接続ですがこれまでは時々音声がつまり気味だったのですがローカルの低速なpi zeroファイルサーバーからやインターネット経由の動画もほぼストレス無く視聴できるようになりました。

Raspberry Pi surf browser on moOde audio

以前 surf2.0 browserをビルド、インストールした時点では動画や動きのあるページの表示は実質使えませんでした。
最近になって試してみるとmoOde audioではそれほどCpu使用率も上がらずなんとか使えそうです。

但しYoutubeは再生はできるもののCpu使用率はかなり上がり、またpulse audioでも問題があります。

少々問題はありますがmoOde Playerの専用ブラウザとするため新しい起動サイズをビルドしてみたいと思います。

環境

Raspberry Pi 3 2018-11-13-raspbian-stretch
Pi1B moOde audio 4.3

ビルドする

ビルドはdocker上のraspbian RPD
通常のraspbianからでも特に問題ないと思います。

ライブラリのインストール

# apt install make xorg-dev libglib2.0-dev libgtk-3-dev libgcr-3-dev libjavascriptcoregtk-4.0-dev libwebkit2gtk-4.0-dev

surf ダウンロードページ
surfのバージョンも変わってないので以前の手順でOKです。 surf2.0 browserをインストール
適当にディレクトリを作成、ダウンロード

# mkdir ~/ダウンロード/surf2 && cd ~/ダウンロード/surf2
# wget https://dl.suckless.org/surf/surf-2.0.tar.gz
# tar -xvf surf-2.0.tar.gz
# cd surf-2.0

surf.cの編集 1200行目当り(適当なサイズ)

gtk_window_set_default_size(GTK_WINDOW(w), 600, 400);

メイクインストール

# make clean install

リネーム、実行

# mv /usr/local/bin/surf /usr/local/bin/surf_600x400
# surf_600x400 moode


適当な起動サイズをいくつか作成しました。
make installはすぐ完了します。(10sくらい)
hostには/usr/local/bin/にコピーでOK

dmenuを使うには

# apt install suckless-tools


起動サイズは720×405を採用しました。
surfにフォーカスを当てCtrl+gでdmenu(LXPanel上部url)が出現します。
(ほとんど使うことはないのですが)


文字は少し小さくなりますがアルバム選択、選曲は可能です。


ラジオリストは整理して1画面に収まっています。


確認している不具合は日本語を含むディレクトリに収めたアルバムアートが表示できません。
sqlite3データベースに変換した情報をうまく処理できないものと思っています。
表示できるアルバムもありますがほとんどダメ
アルバムアート以外の再生、曲表示は正常
通常のブラウザからの曲選択、登録は即座にsurf側に反映されます。


アルバム情報は新規ウインドウでgoogleページが開きます。基本surfブラウザでは動画再生をしないことなのですが誤操作時を考慮して設定確認をしておきます。
最初の確認時はアンプの電源を切っておきます
pulse audioをスタートしてYouTubeのページに飛ぶと再生を開始します。
再生タブはWebKitWebProcessになります。YouTubeの画面から音量を充分下げます。この時再生タブと連動します。
出力装置タブは50%〜60%前後の値になります。音量コントロールは可能ですが新しい動画再生時はまた出力装置側の音量が戻ってしまいます。次回以降はこの設定で起動するはずです。
pulse audioが正常にスタートしないと音量が100%で出力します。

ファイルマネージャー Nemo

Linux Mintの公式ファイルマネージャー
Nautilusベースのファイルマネージャー(ノーチラス号〜ネモ船長 wiki)ですね

# apt install nemo


pcmanfmと比べると少しUIは違いますがほぼ同様の機能を備えています。

pcmanfmから設定した関連付けなども引き継いています。

当サイトではnemoをmultimedia用に特化して使いたいと思います。
設定で不要なボタンなどを非表示、起動に次のオプションを設定(Main Menu Editor)
geometry(サイズ、位置) メディア関連の親ディレクトリ

nemo -g 420x300-0+100 /home/hda/hda4

pulse control

ボタンの文字列と色だけを変更しました。php部プログラム、動作は変更なし
この状態からpulseボタンクリックでpulseスタート、ラジオを再生中であればpulseボタンクリックでラジオ停止pulseは待受状態
moOdeボタンクリックでpulseはkill、moOde Player再生開始。こっちの方が直感的と思います。

多少問題はありますが当初の目標通りmoOde Playerをsurfブラウザにしたことによってひとつのワークスペースをマルチメディア関連に集中することができました。

Raspberry Pi Guake Terminal + xdotool

高機能で人気のあるターミナルのひとつにGuake Terminalがあります。メインのターミナルとして使っている人も多いと思います。
特長のひとつに起動するとraspbianではLXPanelに常駐します。
もちろん通常のターミナルとして使用できますが当サイトでは主にxdotoolと合わせてサブのターミナルとして利用しています。
guake – Drop-down terminal for GNOME Desktop Environment
xdotool – simulate (generate) X11 keyboard/mouse input events

Guake Terminal

# apt install guake

xdotool

# apt install xdotool

スタートアップに登録

~/.config/autostart/guake.desktop 作成

[Desktop Entry]
Type=Application
Name[ja]=Guake Terminal
Exec=guake
$ lxsession-edit


Guake Terminalにチェック


guakeの設定
メインウインドウ
フォーカスを失ったら隠すにチェック


通常時ウインドウは閉じています。
実行はスクリプトを作成してopenbox右クリックメニューに登録しています。
実行するとウインドウが開いてスクリプトに記載したコマンドを実行します。
実行時は1〜2秒マウスを動かさないようにします。

スクリプトの作成

ホームディレクトリの~/bin以下に適当なファイル名で作成します。(以下、基本の書式は共通)
~/bin/apt.sh

#!/bin/sh
guake
xdotool mousemove 730 50
xdotool click 1
xdotool sleep 0.4
xdotool type --delay 50 'sudo apt update && sudo apt upgrade'
xdotool key Return

実行権限を付けます

$ chmod 755 apt.sh


$ sudo apt update && sudo apt upgrade
.historyからも拾えますがこれはこれで便利です

~/bin/cpu_mode.sh

#!/bin/sh
guake
xdotool mousemove 730 50
xdotool click 1
xdotool sleep 0.4
xdotool type --delay 50 'cpufreq-info -c 0 | grep -e "CPU frequency" -e "The governor"'
xdotool key Return


zenityダイアログ スクリプトの末尾に
~/bin/cpu_mode.sh
を追記しておくとguakeから設定の確認ができます

~/bin/vcgencmd.sh

#!/bin/sh
guake
xdotool mousemove 730 50
xdotool click 1
xdotool sleep 0.4 
xdotool type --delay 50 'vcgencmd measure_clock arm &&
 vcgencmd measure_temp &&
 vcgencmd measure_volts &&
 vcgencmd get_mem arm &&
 vcgencmd get_mem gpu'
xdotool key Return


上記のcpufreq-infoで見る値は設定値で実周波数とは異なるようです。
最新のカーネルではcpu温度が上昇(80℃以上からか?)するとcpu周波数も小刻みに変動(下げてくれる)ようです。
もう少し確認してみたいと思います。


$ sudo nmap -sP 192.168.0.0/24
いざという時は便利なコマンドです。(インストール必要)
.historyから消えた頃にはオプションも忘れてしまいます。


$ youtube-dl –version && sudo youtube-dl -U
更新があれば新しい日付になっているはずです。


$ xwininfo
実行すると+のカーソルに変わります。目的のウインドウをクリックするとウインドウID、サイズ、位置などを取得できます。

openbox右クリックメニューなどのように簡単に実行できる環境があればアイデア次第でいろいろ面白い使い方ができるかもしれません。

Raspberry Pi ffmpegを学習する(MP4)

raspbianもstretchからffmpegが復活しています。

ffmpegの使い方については多くのサイトで解説があります。
ffmpegには多くのoptionがあり使い方も多岐に渡るためごく一部だけですが当サイトもweb上のサイトを参照して学習してみたいと思います。

教材を調達する

やはり勉強するからにはなにか教材があったほうがいいですね。
調達するためのツールは前回インストールしたyoutube-dlを使用することとします。

ダウンロードの是非については自己判断、自己責任に委ねるものとします。

ピンも言っています。 ”自分でなんとかしろ!

最低限のお約束としてはプライベートの利用に限ることだと思います。

「君届」 (crop)

教材としてこの動画をダウンロードしてみました。

$ youtube-dl -f mp4 "http://www.youtube.com/watch?v=FFgA1_jOH5M"
or
$ youtube-dl -f mp4 "https://youtu.be/FFgA1_jOH5M"


背景の画像が・・・・
動画の部分だけ抜き出してみたいと思います。

ダウンロードしたファイルをffmpegに喰わせてみます

$ ffmpeg -i "Kimi ni todoke Cap 01 _Prologo_ - Sub. Español-FFgA1_jOH5M.mp4"

これから少し読み取れるのは

Duration: 00:20:35.65
Video: h264 1280×720
Audio: aac
ほかのパラメータは理解していません

参考サイト
FFmpeg > クロップ-領域を指定して動画出力

crop

$ ffmpeg -y -t 0:03 -vsync 1 -i "Kimi ni todoke Cap 01 _Prologo_ - Sub. Español-FFgA1_jOH5M.mp4" -vf crop=713:430:150:127 kimitodo-01.mp4

元サイス 1280×720
713:430 動画サイズ(X,Y)
150:127 切り出し開始位置(X,Y)
最初に目星を付けて開始位置を指定します。動画サイズは実サイズより小さい値を指定しておきます(画面からはみ出すような値を指定すると開始位置がずれる)
開始位置が決まったら動画サイズを合わせていきます。
ffmpeg -y -t 0:03 上書き保存、最初から3秒間実行してstop

切り取り確認は自動で終了しないffplayで再生します。
うまく切り取りができたら通しで実行しますがこの動画は最後の20秒ほど本編とは関係のない映像が入っているのでカットします。

$ ffmpeg -y -ss 0 -t 20:15 -vsync 1 -i "Kimi ni todoke Cap 01 _Prologo_ - Sub. Español-FFgA1_jOH5M.mp4" -vf crop=713:430:150:127 kimitodo-01.mp4

最初の3秒カットしたい場合は -ss 3 として -t 20:12 とします。

Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))

speed=0.766x 非力なPi3では20分の動画に対して25〜30分くらいかかります。

713×430のサイズで取り出すことができました。
位置出し、サイズ合わせは慣れるまで少々根気が必要です。

「君嘘」 (concat)

君嘘は大変悲しい物語ですがアップされている動画は各話に対して5〜10本位の小間切れになっていてますます悲しみに拍車が掛かります。
なんとか後者の悲しみを払拭すべく一話形式にまとめてみたいと思います。

concat

ダウンロードしてひとつのディレクトリにまとめておきます。
テキストファイル filesを作成

file '四月は君の嘘 04 #1-ExLklteXMDA.mp4'
file '四月は君の嘘 04 #2-SuZTfIa1O88.mp4'
file '四月は君の嘘 04 #3-GM2vB0_ecLA.mp4'
file '四月は君の嘘 04 #4-OCsH3K1kXkE.mp4'
file '四月は君の嘘 04 #5-3OWiaRIb7z8.mp4'
file '四月は君の嘘 04 #6-THvTrD5f49w.mp4'
$ ffmpeg -safe 0 -f concat -i files -c:v copy -c:a copy uso-04.mp4


speed 140x 〜 151x
concatは基本コピーなので処理が早い


ほとんど違和感もなくうまくつながりました。

画像サイズは5話まで640×360以降は1280×720になっているようです。
640×360の映像は上記の方法でうまく行くのですが1280×720の映像はノイズや色ズレなどが発生してうまく繋がりません。
そこで一旦tsファイルに変換してからmp4ファイルを作成してみました。
参考サイト ffmpegコマンドで複数のmp4動画を無劣化で結合する方法
テキストファイル concat-ts 作成

ffmpeg -i "四月は君の嘘 10 #1-EzS6353s5Tw.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 01.ts
ffmpeg -i "四月は君の嘘 10 #2-Ul5E2TJSMFc.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 02.ts
ffmpeg -i "四月は君の嘘 10 #3-BuplOmZzdOo.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 03.ts
ffmpeg -i "四月は君の嘘 10 #5-IxFlN4u8SlE.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 05.ts
ffmpeg -i "四月は君の嘘 10 #6-2CDCQ3t7S84.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 06.ts
ffmpeg -i "四月は君の嘘 10 #7-Vyf9MEkMfkE.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 07.ts
ffmpeg -i "四月は君の嘘 10 #8-jpVZnvexDW8.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts 08.ts

ffmpeg -i "concat:01.ts|02.ts|03.ts|05.ts|06.ts|07.ts|08.ts" -c copy uso-10.mp4

rm *ts

concat-ts 実行

$ sh concat-ts


今度はうまく繋がってくれました。

scale

当サイトのディスプレーは1024×768です(今時こんなディスプレー使っている人は少ないですね(・・;)
mpvは画面サイズに合わせて縮小して表示しますがffplayは実サイズで起動します。
640×360は1024×576にサイズアップ
1280×720は1024×576にサイズダウンしてみます。
テキストファイル scale 作成

$ ffmpeg -i uso-04.mp4 -vf "scale=1024:-1" -q 2 "四月は君の嘘04.mp4"
$ ffmpeg -i uso-10.mp4 -vf "scale=1024:-1" -q 2 "四月は君の嘘10.mp4"

scale 実行

$ sh scale

通常のPCではどれくらいの速度が出るのかわかりませんがPi3ではspeed 0.4〜0.5くらいと処理に時間がかかります。単純に再生時間の2倍以上とみていいでしょう。
640×360から1024×576にサイズアップした映像も視聴には問題ないレベルと思います。(元ファイル次第)

Top