Y901x」タグアーカイブ

Gst 1.0

Novacut/GStreamer1.0 – Ubuntu Wiki
~jderose/+junk/gst-examples : contents of video-player-1.0 at revision 72

こんなページを見つけた。
これでやっと Y901x の GTK3 化に進歩が…

GStreamer 1.0 用だった。
つーか今まで 1.0 パッケージが公開されたことを知らなかったという…
バージョンは 0.11 のようですけど、0.10 と共存可能らしい。

PPA for GStreamer developers : “GStreamer developers” team

Fedora 17 にデフォルトで入っている GStreamer は 0.10 だ。
0.10 用のサンプルは PyGtk コードのまま。

~jderose/+junk/gst-examples : contents of video-player-0.10 at revision 72

でも 1.0 のコードを 0.10 に書き換えすれば動くかも。
よく見たら Python も Python3 じゃないの、とにかくコピペして書き換え。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

# python2

from os import path

import gi
gi.require_version('Gst', '0.10') #'1.0')
from gi.repository import GObject, Gst, Gtk

# copy...

on_sync_message がやはり発行されない…
ということは on_message を作っても msg は空のまま。
0.10 のバインディングは Fedora 15 時と何も変わっていないということみたい。

このアプリを試すためだけに GStreamer 1.0 を導入してくれ。
なんて言えないよ、てか私も今は入れたくないし。

Fedora や Ubuntu の次期版次第だ、とりあえず覚書ということで。

しかしサンプルコードが Python3 なのも気になる。
実用では見向きもされないままで Linux ではガン無視されている Python3 は失敗作ということで Winamp のごとく Python5 が出るとばかり思っていたのだが。

とにかく文字列が Unicode だと local が utf-8 の Linux では都合が悪すぎ。
とずっと思っていたけど前回 gunichar が ucs-4 だと気がついたっけ。
検索してみる。

DSAS開発者の部屋:Python2.x/3.0のunicode内部表現について

あれ、Fedora の Python って u’str’ は UCS-4 だということなの?
おいおい、私みたいに勘違いしていた人って多くないか?
ならば端末からチト試してみよう。

普通に u” のままで日本語出力ができた、なんじゃこりゃ!
と思ったけど format で成形すると駄目。
ついでにスクリプトファイルにすると直 stdout も駄目になる。

ならばスクリプトを ucs-4 で保存、、、スルーされてしまった。
まあ ucs-4 でスクリプトを保存する人はいないし変換すればいいだけ。
まあとにかくそういう動作をするようだ。

うん、そういうことなら Python3 でも別にいいかなと。
でもデフォルトで入るようになるまで手を出したくない。
「このコードを試すためだけに Python3 を入れてくれ」なんて嫌だよね。

WebM binary

意表を突いて Y901x を更新しました。
PyGtk のままだよ、当然 GTK2 だよ、もう古いよ過去の異物だよ。
とはいえ Google Chrome なんかも GTK2 だったりするのだが。

とりあえず再生速度変更の方法を何故か見つけたのでやってみようと。
Basic tutorial 13: Playback speed – GStreamer SDK documentation – GStreamer SDK documentation

一番目引数に 1.0 をデフォルト値に上下した float 値を入れた seek_event を作る、それを playbin2 に投げただけでアッサリ。
ただ再生停止したりファイルを切り替えするとリセットされて困った。
GST_MESSAGE_STATE_CHANGED で都度投げる方法でなんとかした。
こんなんで大丈夫かな…

ボタンを付けたかったけどスペースが無いのよね。
VLC とかみたく小さくしたくてもできないウインドウでは嫌だもの。

それと気になっていたけど放置していたところをまとめて。
Linux アプリ作りは本当にイイなぁ。
どうせ自分しか使っていないだろうから好き勝手にできるし。

VLC と違って音程は過去の遺物である Y901 同様変化する。
つか私は変化したほうが自然だと思うんだけど。
ま、これで YouTube から拾ったけど早すぎてどうやっているのかが全然解らなかったバイクのスゴテク動画をスローでじっくり検証できるようになったぞと。
倍速側なんてオマケだ、どんな場合の時に使うかワカラン。

しかーし

YouTube は最近 Flash, MPEG-4 AVC から HTML5, WebM になったのね。
これはキャッシュからコピーするスクリプトを作り替えしなければ。
というわけで今まで使っていた Nautilus スクリプトを改造した。

のだが…

YouTube の動画はいつのまにかキャッシュに残らなくなっている。
検索してゲゲッ、最近拾ってなかったので気がつかなかった…
FLASH のままな Opera キャッシュでも拾えない、お手上げだ!
あきらめて拡張を使おう、個人製作のバイク動画くらい拾わせてくれよ。

使えないけどせっかくやったので Python 覚書。

ちなみに Fedora 17 でファイルの拡張子が無い場合は
/usr/share/magic (/usr/share/misc/magic へのリンク)
の指定で見分けている、一応拡張子優先であるが。

とにかく /usr/share/magic を Gedit で開いてみる。
「エンコードが不明!」とか出るけど無視して「強制的に編集する」ボタンをば。
Ctrl+F で webm と打ち込み検索する、強制編集状態でも探せるよ。

WebM って Matroska のサブセットなんだ、今頃知った。
てか日本ではネクラでキモチワルイ奴しか今まで縁がなかったでしょコレ。
ftypwebm なんて指定で MP4 じゃダメだったのかな?

Linux の場合リポジトリからまとめてコーダーとデコーダー(あえてコーデックとは書かない)を入れられるからあんまり気にしないのよね。
MOV, RM, WebM なんかも普通に Nautilus でサムネイルできるし。
私の知る限り GStreamer で再生できないのは WMV3 だけだ。

それはどうでもよくて。

0x4282 が含まれている否かで通常 Matroska と見分けているみたい。
ま、実質先頭バイナリ4つだけ見れば動画であることは解るわな。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

TEST_FILE = "test.webm"
WEBM = "\x1a\x45\xdf\xa3"

for a in WEBM:
    print ord(a),

print "\n-----"

o = open(TEST_FILE, "rb")
bin_array = o.read(4)
for a in bin_array:
    print ord(a),
o.close()

print "\n-----"

print bin_array == WEBM

この方法で拡張子が無くても先頭バイナリで判別が可能になる。
使い道は無かったけど、きっといつかは勉強して良かったになるはず!

実は Gio を使ったほうが簡単なんだけどね。
拡張子を取っ払ってこんなコードを試せば解るよ。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gi.repository import Gio

# Create GLocalFile
# Remove File Extenshon
f = Gio.file_new_for_path("test")
# Create GFileInfo
info = f.query_info(
    Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
    Gio.FileQueryInfoFlags.NONE,
    None )

print info.get_content_type() == "video/webm"

実は Python コードを書くのも久々だったり。
とにかく半年以上間が開いたけどアプリの更新。
年金を貰える歳まで絶対に生き残ってやる!

Digital camera with Linux

Canon のデジカメを買った。
写真ド素人の私がレビューしても無意味だが幸い私は Linux 使いである。
コレを Fedora 16 に USB 接続してどうなるか試してみる。

なんか Canon だということを自動認識して勝手に処理してくれた。
ちなみに Panasonic だとこうなる、カメラアイコンにならないんだが。

そこいらに売っているデジカメなら何の問題もなく認識しそうだね。
Fedora や Ubuntu なら本当に素のままで何でもできてしまうわな。
もはや Windows にできて Linux でできないことってエロゲだけかも。

でも実際にはいったいドコにマウントされているのだろう?
場所はどうなっているのか Nautilus で Ctrl+L してみる。

コレは gphoto2 プロトコルで接続していますってことかな。
gPhoto – Wikipedia

とにかく USB 接続している状態で普通に Eye of GNOME 等から観覧可能。
しかし動画は何故かサムネイル作成や再生開始まで異様に時間が掛かる。
HDD にコピーすれば何も問題なく観覧できるのだが気になる。
というか Y901x では動画が再生できなかった…

理由がよく解らないので gnome-terminal にドロップしてみる。

こんなところにマウントしていたのか!
しかし Nautilus から W クリックすると Canon Digital Camera 部に転送される。
というかツリーを辿れない、シンボリックリンクでは無いようだし。

端末からならツリーを辿って eog 等でファイルも開ける。
けど gvfs-open 指定で Tab キーを使うと gphoto2 プロトコルに変換される。
あ、GNOME3 で関連付け起動は gnome-open ではなく gvfs-open を使います。

それなら Y901x でも開けそうなんだが…
同じようにカレントディレクトリから Y901x を使っても再生できなかった。
もちろん sys.argv も同じエラー、フルパスではアクセスできない。

つまり実際にマウントされるのは ~/.gvfs 以下。
だけど GVfs 経由で参照しなきゃアクセスはできないようだ。
gphoto2:// で始まるプロトコルに変換する必要があるのね。
つか、GVfs なら GTK3 化しなきゃいけないな…

平日にハマると怖いのでコレ以上の検証は後日に続く。
久々にアプリの更新ネタができたけど最近忙しいので…

realplayer

RealPlayer Mini テスト版
http://jp.real.com/?mode=rp_mini
というものがあるらしい、まさかココが軽量プレイヤーを作るとは。
Windows で動画をほとんど見ないけど(だってミニノートだもん)試してみる。

インストール直後にアップデートでこんなのが。
どう考えたって FFMPEG だよな、GStreamer と同じ感じになるかな。

ちょー!
一つ再生したらプレイリストに同一ディレクトリのファイルがリストアップ!
矢印キーはボリュームだ、まぁ我がアプリが特殊なだけなのだが。
自動リストアップ以外はよくあるプレイリストなのね、ふむふむ。

単独数値キーでリサイズ。
右にくっついているプレイリスト。
ウインドウ左上部クリックでメニュー。
Esc で終了できる。
気のせいだろうか、何か見覚えが…

一時停止は Space キーだし使い勝手も悪くない、シークも早い。
そのまんま FLV も H.264 も再生できた、私はこれだけで十分。
いくつかのキーボード操作に違和感があるけどカスタマイズ可能。
機能や設定項目も豊富、私はどうでもいいものばかりだけど。

画面上にマウスカーソルを置いても本家のようなウザい枠は出ない。
どういう心境の変化だよ、この会社らしいウザさがまったく無い。

それより何より。
いくらリサイズしても画面をはみ出さない、タスクバーに食い込まない。
Windows Media Player や VLC で一番困ることがまったくおこらない。
GNOME ならあたりまえなんですけどね、Windows ではアプリ側の仕事なので。

関連付けはコッチに変更することにした、とにかくサイズで困らないのがいい。
正式版でまた余計なことをやらなければ最強プレイヤーになりそう。
てか、個人製作プレイヤーはマジで終わった。

Fedora 15 005

Fedora 15 (GNOME 3) 64bit 生活五日目。

※ データ移動

そういえば、毎度のように旧 STAT HDD をスレーブ接続してファイルコピーしたんだけど。
よく考えたら 64bit OS で 32bit 記録データを普通に認識できるんだ、今頃気がついた。
デスクトップ PC 限定の話だけど 64bit Linux への移行でデータコピーは悩まなくていいね。

※ GNOME 3

【レポート】Fedora 15に搭載された新機能 (1) GNOME 3を採用したFedora | エンタープライズ | マイコミジャーナル

GNOME3 の機能についてはココが一番解りやすかった。
コピペしてもしょーがないしリンクだけ、Alt キーでシャットダウンメニューを出すのか…
ログアウトしないとシャットダウンできないかと思っていたよ。

※ VirtualBox ose

VirtualBox が v4 になって標準の vdi 作成位置が変わって面食らった。
とりあえず v3 のデータはコピペで動きますけど。

【レポート】VirtualBox 4.0でデータの保存場所が変更された理由とは? | エンタープライズ | マイコミジャーナル

変換するより使わないのを整理と入れ直しで綺麗にしたほうがいいと思うけど。
Vista は Visual Studio を含めると再インストールに二日掛かるんだよね。
v3 形式のままでも動くんだからしばらくはこのままでいこうかと。

つかドットディレクトリ内に入れてくれよ、手書き編集なんかしないんだから。
デフォルトじゃ標準ディレクトリが全部アルファベット小文字な私は一番上に来て困る。
設定を変更して Ubuntu 11.04 は入れ直しするはめになったぞこのやろう。

ose 版だと USB が使えないとか見かけるけどマウスもキーボードも USB だけど動く。
そういえば USB メモリって全然使わなくなったなぁ。

※ 個々アプリケーション

gcc が入っていない、ヘッダも lib も何もない。
Ubuntu でさえ入るようになったのに。

evince (ドキュメント・ビューア)が凄い進化をしている。
手持ちの PDF で見れないものは無くなった。

gksu の代わりに beesu なのは以前と同じだ。
でも sudo は自分をユーザー登録しないと使えない。
su で充分だしホーム以下以外はほとんど弄くらないで使えるからどうでもいい。

gnome-tweak-tool ってのを入れたけど dconf-editor とあまり変わらない。

※ 自作アプリケーション

Y901x が x86_64 環境で動画再生できない原因がやっと解った。

Unicode Manipulation

g_utf8_collate_key_for_filename ()
の引数は gchar* と gssize なので char* と size_t が実体だ。
_t が付く型名はコンパイラ依存なので x86_64 では 64bit サイズになる、と思う。
つまり numsort.py の argtypes 指定は int ではなく size_t にする必要がある。

glibc = ctypes.cdll.LoadLibrary('libglib-2.0.so.0')
cmpstr = glibc.g_utf8_collate_key_for_filename
cmpstr.restype = ctypes.c_char_p
#cmpstr.argtypes = [ctypes.c_char_p, ctypes.c_int]
cmpstr.argtypes = [ctypes.c_char_p, ctypes.c_size_t]

それとgtk.gdk.threads_init() 処理を入れるとリピートで死ぬ。
全然使わないので気がつかなかった、終了前に次を再生にするもので。

gtk.gdk.threads_enter()
self.next_menu.emit("activate")
gtk.gdk.threads_leave()

とやってみたら上手く動いた、実はイマイチ解っていない(ぉい!
エ○動画連続再生の要望しか来なかったあの頃を思い出す…

VirtualBox ose 上 Ubuntu 11.04 (x86) でも動作確認してと。
てなわけで Y901x 0.3.7 公開、次は gedit プラグインの作り替えか…