承前。

純正の拡張機能(VideoThumbnail)ではPythonとPyGtkを使っており、これらが標準で同梱されていないPuppyLinux571JPではサムネイルを表示しようとするだけで、少なからぬディスク容量を費消することとなります。
勿論、他の用途でPythonを使うのであれば無駄にならないので問題ありませんが、ここはひとつシェルスクリプト(及びgtkdialog)で乗り越えたいと思うのがPuppyユーザーというもの。

ROXからどのように拡張機能が呼び出されるかが分かりました。フレームの切り出しにはmplayerを使うので、後はこれを/root/.thumbnails/normal へ格納すればよいのでは、と考えていろいろ試行錯誤していました。

#! /bin/bash

#echo "$@" >> /root/my-documents/program/thumbnail/log.txt
mplayer -vo png -vf scale="$3":-3 -ao null -ss 10 -frames 1 "$1"
mv 00000001.png "$2"

リスト1 video_mp4 として呼び出されるコード例


が、しかし。そうは簡単に問屋が卸してくれなかったのですよ。(別に「決算報告書を2期分もってこい」等とは言われませんでしたけど。)

どうしてもサムネイルを表示してくれません。仕方ないので、0installでインストールされたpythonのコードを読んでみたのですね。
結論から書く。生成されたサムネイルはpngファイルなのですが付加情報が含まれているのですね。
分かってしまえばどうということはない。当然といえば当然。ROXはサムネイルジェネレータを呼び出す際、元のファイル(のフルパス)と、サムネイルファイル(のフルパス)、さらにサムネイルの大きさ(128ピクセル)を引数としてジェネレータに渡します。なので、キャッシュをチェックするのも同様に行い、ヒットすれば吸い出して表示してくれるものだとばかり思っていました。
勿論こんな単純な方法だと、例えば同名の巨大ファイルを配置されたら一撃でメモリエラーを生じてクラッシュしてしまうでしょう。ちゃんと付加情報をチェックしてサムネイルとして適切かどうか判断しているのでは、と想像しています。ROXのソースを読んでいないので正確なところは分かりませんが。

付加情報の付加にはgdk-pixbuf の save を使っています。ということで、ああこれなら確かに、pythonとpygtkの組み合わせは適切な選択といえるでしょうね。

ということで、先に進むには 少なくとも「mplayerが生成したサムネイルpngをgdk-pixbufに読み込み、付加情報を付加して書き戻す」というプログラムを書かなくてはなりません...  なんでもかんでもシェルスクリプトでお手軽に、という訳にはいかないようです。


以下に各アプリケーションが生成したサムネイル画像のダンプを示します。なお、各々の元画像は同一のものではありません。


図1 ROX-Filer が生成したサムネイル画像の先頭部分


図2 Geeqie 1.1 が生成したサムネイル画像の先頭部分


図3 VideoThumbnail(ROX-Filerの拡張機能)が生成したサムネイル画像の先頭部分


図4 mplayer が生成したサムネイル画像の先頭部分

 

承前。



VideoThumbnailに至るシンボリックリンカ video_mpeg を video_mp4 にリネームしたところ、mp4 についてはサムネイルが表示されるようになりました。

解せぬ...
 

自分宛メモ

for i in `ls *.mp4`;do mplayer -vo png:prefix="$i" -vf scale=128:-3 -ao null -ss 5 -frames 1 "$i"; done


for i in `ls *.mp4`;do ffmpeg -ss 5 -i "$i" -vf scale=128:-1 -vframes 1 -f image2 -y "$i".png; done

上記の比較ではmplayer のほうがかなり高速。

 

【追記 2014/10/18】
ROX-Filer にて動画のサムネイルが表示されない件は、/root/.config/rox.sourceforge.net/MIME-thumb にある video_mpeg を video_mp4 にリネームしたところ改善を見ました。とりあえず、mp4 についてはサムネイルが生成され表示されます。


先日ネット上で見かけた記事によれば、最近の若い人はパソコンを使う機会(時間)が減っていて基本的なスキルが身についていない人も少なくない、のだそうです。
まあ、ネットへのアクセスならスマートフォンやタブレットPCで充分ですから当然といえば当然。そのうち従来型の、すなわちキーボードとポインティングデバイスが繋がっていて本体に中途半端な容量のストレージを内蔵している、PCは完全な仕事道具に成り下がってしまうのでしょうね。

PCにあってスマートフォンにないもの、というのはいろいろあるのですが中でも大きいのは「ファイル」ではないでしょうか。PCで育った世代から見れば、スマートフォンだってファイルの塊だろう、と思うのですが確かに概念としての「ファイル」は影を潜めてしまっています。元々ファイル(ついでにいうとファイルの中身であるレコードやフィールドも)は帳票処理なんかの事務処理系の名残りな訳で、それらに縁のないデバイスであるスマートフォンでは必要ないのは当然といえば当然。

でPCでは当たり前なファイルを管理するアプリケーションがファイルマネージャだったりファイルブラウザだったりするのですが、僕が常用しているOS「PuppyLinux571JP」にはROX-Filer というものが採用されています。これは扱いにややクセがある(デフォルトではシングルクリックで遷移する等)ものの、動作そのものは軽快で悪いものではありません。

が。致命的な難点があるのも事実。
それは動画のサムネイルを表示しない、というもの。一応、オプションで機能拡張して対応可能になっているのですが、これがうまく動作しません。
まず、インストール作業からしてかなり煩わしいのですね。
リポジトリから0install(zeroinstall-injector)という、OSのパッケージマネージャとは無関係に動作するパッケージマネージャをいれます。これがインストールされていて初めて、ROX-Filerは拡張機能(ビデオサムネイルの生成、MIME管理ツール)をダウンロードしてくれます。
で、拡張機能の動作にPythonとPyGtkが必要なのですね。まあ、並のLinuxディストリビューションであれば標準でインストールされているかも知れませんが、PuppyLinux571JPにはありません(同じPuppyでも他のバージョンではPythonを同梱しているものもある)。追加するにはdevx.sfsをロードしなくてはなりません。PyGtkに至ってはリポジトリから別途インストールが必要です。
ここまでやってようやく設定ダイアログが開いたりするのですが...  ビデオサムネイルは生成されません。

拡張機能はPythonで書かれているので、もしバグっているのなら修正可能かも。ということで単独での動作確認を試みようと調べてみたら、
設定内容は /root/.config/rox.sourceforge.net/MIME-thumb に格納されています。内容はMIMEに対応したハンドラへのシンボリックリンカで、その先は/var/cache/0install.net/implementations/(ハッシュ)/にある、VideoThumbnailという ROXアプリです。(しかし、OSのパッケージマネージャに干渉しないとはいえ、/var/cache 以下にインストールするっていい根性してるよな)
で、このアプリを単独で動かそうとすると「必要なライブラリがみつからないよーん」とエラーになります。
必要なのはROX-Lib2というPythonのライブラリで、同じく/var/cache/0install.net/implementations/以下にインストールされていますので探し出して環境変数 PYTHONPATH="/var/cache/0install.net/implementations/(ハッシュ)/ROX-Lib2/python" としてやれば検索するようになります。環境変数の定義は/etc/profile の終わりにでも付け加えればいいでしょう(ここで再起動が必要)。
件のVideoThumbnailをデスクトップへDnDし、そこへ動画ファイルをDnDするとサムネイルを/root/.thumbnails/normal 以下に生成してくれましたので、このアプリそのものは正常に動作していると思われます。(出力先ディレクトリがないとエラーになる)
となると、ROX-Filer そのものが拡張機能に対応していない可能性がでてきます。ROX-Filerのソースをもらってきてチェックしなくてはならないのですが、今のところそこまで深入りしたくありません。

ので、他に使えそうなファイルマネージャはないのかしらん、と探してみたのですが...

PCmanFM


Thunar


両者とも軽量級のファイルマネージャとして有名らしい。Thunar のほうが呼び込む参照ライブラリが大きいのかフットプリントが大きい(15MB)ようです。
しかし、両方とも表示が何かおかしいですね。アイコンが表示されていません。

大した量ではないとはいえディスクスペースを消費するし、表示もおかしいし、ということでもうしばらく ROX-Filer で我慢しなくてはいけないようです。ファイルマネージャの入れ替えはデスクトップの使い勝手を大きく変えてしまうので慎重に進めたいと思います。
 

自分宛メモ

#! /bin/bash

# for puppylinux 571JP
# ビルトインパッケージの構成ファイルのサイズ合計を求める
# /root/.packages/builtin_files
#
 
pushd . > /dev/null
for i in `cat "$@"`
do
    if [ -d "$i" ]
    then
        popd > /dev/null
        pushd . > /dev/null
        cd $i
    else
        n=`ls -l $i`
        fl=`echo $n|cut -d' ' -f5`
        fn=`echo $n|cut -d' ' -f9`
        echo $fn" ,"$fl
        let total+=$fl
    fi
done
popd > /dev/null
echo "total : "$total

 

Firefox が 33.0, Google chrome が 38にそれぞれアップデートしました。

普段はもっぱらFirefox で chromeはほとんど使いません。せっかくなのでアップデートしたついでに少し動かしてみたのですね。

「お、重てえ...」
ページそのもののレンダリングは問題ないのですが、遷移する際の切れが今ひとつ感じられません。また、flashのゲームを動かしてみると、なめらかに動かない場合がありました。終わりつつある技術、コンテンツなのかも知れませんがFirefoxではこんなことはありません。
そのほか、しばらく前のバージョンからシステム標準の日本語入力(SCIM-Anthy)を受け付けなくなっていてプラグインを要するようになっているのも不便といえば不便です。
まあ、自前で複数のOSプロダクトを抱えている会社のやることですから。悪くいえば旧来の切り捨て、良く言ってパラダイムの差、ということなんでしょうね。


一方のFirefoxですが、自動アップデートさせたら起動に異常に時間がかかるようになりました。HDDを読みこみはじめると帰ってきません。他のアプリケーションの挙動に支障を来すくらいです。アップデート直前に数GB程度ファイルを削除したのでその影響もあるかもしれません。また、先日このHDDは起動エラーを起こしています。嫌な予感しかしない。
とりあえずFirefoxをディレクトリごと全削除してクリーンインストールしなおしたら改善しました。
手元の環境だけかもしれませんが、32のマイナーアップデート当時、正常終了できなくなっていました。ps aux で見つかるのでゾンビになっていたようです。再度起動すると一見正常起動したように見える(そしてとりあえず動作する)のですが、右上のメニューが開かなかったりスピードダイヤルが表示されなかったりしました。

直っているといいなあ。



 

PuppyLinux の機能の一つにリマスタリングがあります。これは、インストール後にユーザーが加えた改変部分を組み込んでISOイメージにまとめてしまう、というものです。この機能のおかげでカスタマイズしたPuppyのバックアップや再配布が容易になっています。

OSのカスタマイズなんて何か意味あるの?と思って使ってこなかったのですが、Puppyは自動アップデートしませんので修正版を配布する際に有用なことに気づきました。今年はオープンソース受難の年らしく(?)、opensslやbashやらでかなり重篤なバグが明らかになっています。PuppyはもともとデスクトップOSであり、個人的にも外向きに使うことはないので余り気にしなかったのですが踏み台にされる可能性もないわけではありません。

ということで私製セキュリティアップデート版を作成することにしたのですが、ついでにいろいろ手を加えてみることにしました。
目標は「気楽に使えるPC」というもの。スマートフォンやタブレットPC向けのOSに比べて複雑になりがち(※)なデスクトップPCのOSを何とかしよう、と。
ターゲットは手元に複数台転がっている、pentium M世代のCPUとRAM512MB程度搭載のノートPC。atom搭載のネットブックも含まれます。

今までやったこと
セキュリティアップデート bash, openssl
ブラウザの入れ替え Opera -> QtWeb
メーラーの入れ替え Opera -> Sylpheed
ワープロ abiword の削除 代替として xournal
表計算 gnumeric の再組み込み
一部アプリケーションのアップデート geany, sfs_load, remasterx, Viewnior, jwm
オーディオプレーヤーの入れ替え pmusic2 -> Audacious 3.2.4
ウィンドウマネージャ dwm6 の追加 
アプリケーションランチャ wbar の追加
gtk2 のテーマ変更
フォントの変更 M+1P+IPAGを削除、Migu 1CとTakaoEx明朝を追加
不要なアプリケーションの削除 pmusic2, osmo, ゲーム類など
オプションsfsの自作、整備  AOO, dropbox, devxにclangを追加など

dwm はjwmがそのままではタイリングウィンドウに対応しないので追加したものです。一旦Xを終了して startx dwm (戻す場合はstartx jwm)で切り替わりますが、キーバインドやショートカット類、アプリケーションランチャーが未整備なため実用レベルに至っていません。

QtWeb は表示が高速なことと原則としてキャッシュを使わないので採用しました。Webkit系のブラウザは他にもありますが、動作が安定している点、フットプリントが小さい点でQtWebが優れています。なお、バージョンは3.8.4です。最新の3.8.5はなぜか動きませんでした。
問題は閲覧困難なサイトがあることで、個人的に一番困っているのが feedly.com が実用にならないこと。まず、そのままでは表示すらできません。ディスクキャッシュを有効にする必要があります。また表示に長時間を要する場合が多いです。さらに記事のサイトプレビューが機能しません。
その他、Operaの時もそうでしたがflashplayerとの相性がよくなく、クリックへの応答タイミングが悪くてゲームは事実上遊べません。動画サイトの閲覧には支障ないようです。

Sylpheed は imap4限定で使うことにしています。pop3だとダウンロードしたメールを1メール1ファイルで格納するらしいので、短いメールが多いとディスク使用効率が悪くなりそうです。

Audacious(3.2.4)はubuntu precise からもらってくればalacも扱えますがその代わりフットプリントは大きくなると思います。(ffaudioプラグイン) 今回はサイズ優先でalacを諦めclangを使って自前でビルドしたものを入れました。

geany, sfs_load, remasterx, Viewnior
バグフィックス及び機能追加変更分が大きいので。

ワープロはコンパクトで使えるものが見当たらず、とりあえず xournalを代替で入れてあります。abiword の何が問題かというと日本語入力の際SCIM-Bridgeを要する点で、遅いPCだとチラつきが酷くて使う気が萎えます。定型文作成であればエディタとフォーマッタで対応する方法もありますし、表やグラフを多用しなくてはならない場合は gnumericを使ったほうがいいでしょう。
どのみち欧文ワープロの流用では厳密な意味で日本語ワープロにはなりませんし、そんな中途半端なものをディスクスペースを浪費してまで載せるのであれば、顧客データベース兼用の宛名書きソフト(年賀状ソフトともいう)でも載せたほうが実用的と考えています。Linux版があれば、の話ですが。

フォントを変更したことでまれにダイアログの表示が乱れる場合がありますが、今のところ作った本人しか使わないので支障ありません。

ISOファイルサイズは追加SFSを含まない状態で129MBです。VirtualBoxで試験したところRAM128MBでも動作しました。但しホストCPUはcore2duo 2.26GHzです。実機でpentium pro + 128MBとかでは実用にならないでしょう。



※ハード仕様が一通りでないので当然ではあるのですが。

※OSは例によってPuppyLinux 571JPです。

表計算ソフトにはここしばらくLibreoffice を使ってきました。gnumericよりは使いやすいのですが、問題がない訳ではありません。
一番の不満は表示が重いこと。家計簿をつけているのですが、1000行足らずのシートをスクロールさせると波打ったり、罫線(枠線ではなくセル境界)が乱れたりします。大した作業ではないので我慢していたのですが、やはりこの手の作業は気持ちよくやりたいものです。
ということで、オープン系オフィススイートのもう一方の雄である、Apache OpenOffice(以下AOO、どうかアパッチダブルオーと発音してください。)を試してみることにしました。

AOOのバージョンは4.1.1-6(ja)、Libreoffice は 4.2.6.3-ja です。

結果
スプレッドシートの編集速度
AOOの勝ち。前述の不満点は全て解消されました。

互換性
手元にMSofficeのファイルがほとんどないので何ともいえないのですが、Powerpointで作成されたプレゼンテーションファイルはLibreofficeのほうが正しく表示されました。但し、グラフィクスの入ったページを印刷(配布資料)しようとするとエラーになって、そこで打ちきられてしまいました。特にメッセージも出ないのでブラウザからcupsをチェックするまで判りません。一方、AOOではやはりグラフィクスはうまくいかないのですが、最後まで出力します。但し、ファイル全体としてレイアウトが盛大に崩れてしまって実用的ではありません。
Libreofficeで書いたワープロ文書はAOOでも大差なく開けますが、やはりそのままとはいかないようで3頁ちょうどにまとめた職務経歴書が2行はみ出して4頁に及んでしまいました。
 
起動速度
両方共大差ないようです。今後、差がつくかもしれません。

ディスク占有量
PuppyLinuxなのでsfsに固めて使っているのですが、Libreofficeは149MB(xz),AOOは115MB(xz)でした。ちなみにLibreofficeのほうは付属しているフォントは使わないので外してから固めてあります。AOOもそうすべきだったのですが、うっかり忘れてしまいました。

計算速度
計測できるほど計算量のあるシートが手元になく、違いは判りませんでした。

 
ということで互換性の問題がありますが、これから新規に使うならコンパクトで(今のところ)高速なAOOがお勧めです。なお、データベースやdraw及び開発言語は使っていないので今回は比較しませんでした。

※当記事を参考に実験された場合に生じたいかなる事態についても筆者は責任を負いません。最悪の場合、必要なファイルまで消してしまう可能性もありますので、運用にあたっては自己責任でお願いします。

以前のバージョンには既存パッケージのリムーバが付属していたような覚えがあるのですが、571JPでは見つけられなかったので自分で書いてみました。
 pushd .;for i in `cat /root/.packages/builtin_files/取り外すパッケージ`; do n=`file $i|cut -d' ' -f2`; if [ $n == 'directory' ];then cd $i;else if [ $n == 'cannot' ];then continue;else echo $i;rm $i;fi;fi; done;popd

組み込みパッケージの一覧は、/root/.packages/builtin_filesにあります。
 

.la ファイルが見つからない件について(承前)

deadbeef をビルドする際欠けていたのは、libgobject-2.0.la でした。念のため、と思って/usr/lib を覗いてみると他のライブラリについてはほとんど .laは同梱されているようです。
ということで、PuppyLinux571JP(というか、日本語版のベースになっている5.7.1)の出荷元が含めるのを忘れた可能性が高いのですが、このままではビルドできない事態に変わりはありません。
探し方が悪いのかもしれませんが、どうしてもprecise の.laを見つけられませんので、最後の手段として他のディストリから抜き出して改変して使うことにしました。幸い、一つ前のバージョンであるubuntu lucid updates にありました(libglib2.0-dev_2.24.1-0ubuntu2_i386.deb)ので、libgobject-2.0.la とlibgio-2.0.la を取り出して中身を適当に変更(バージョン番号を合わせただけ)して /usr/lib へコピーしました。

これでとりあえずdeadbeefはビルドできるようになりました。が、これで問題ないかどうかは判りません。

というのもdeadbeefを使っていたら暴走したからです。パッケージ側の問題かもしれませんが。
 
嫌な予感しかしませんな。

 


Search

Calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>

Archive

Mobile

qrcode

Selected Entry

Link

Profile

Search

Other

Powered

無料ブログ作成サービス JUGEM