どうも GTK3 は xid を得る方法も全然違うようで。
python – DrawingArea Cannot Get XID – Stack Overflow
expose-event が draw に変わっていたりでもうよく解らない。
PyGI で Gst を扱う情報が見つからず全然アプリ開発が進まない。
ClutterGst というのがあるけどよく解らないので検索。
PyClutter video tutorial ? Hindsight Labs
こんなのを見つけたけど古いバインディングだ。
PyGI で書き直して実験してみることにした。
いくら探しても ClutterGst の Reference Manual が見つからない。
しかたがないので dir() で漁って例外で確認しているけどよくワカラン。
例外で playbin2 がどうとか出た、描写エンジンは playbin2 なんだね。
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys from gi.repository import Clutter, ClutterGst class TestStage(Clutter.Stage): def __init__(self): Clutter.Stage.__init__(self) # ClutterGst self.tx = ClutterGst.VideoTexture() self.tx.set_uri("file:///home/sasakima-nao/movie/bike/ninjya1000.flv") self.tx.set_playing(True) self.add_actor(self.tx) # self self.connect("destroy", self.quit) self.set_title("ClutterGst Test") # Not linked to the window size self.set_size(400, 400) self.show_all() def quit(self, widget): Clutter.main_quit() if __name__ == '__main__': init = Clutter.init(sys.argv) if init[0] == Clutter.InitError.SUCCESS: # Param (argc, argv) ??? ClutterGst.init(0, "") TestStage() Clutter.main()
ClutterGst も専用の初期化が必要であるようです。
パラメータが int と str だったけどもしかして C 言語方式?
sys.argv シーケンスでは展開してくれない。
pygst みたく Window 枠に合わせて描写されない。
当然 DirectShow みたくウインドウより大きな映像ははみ出す。
絶対位置描写だと又ウインドウサイズ計算が面倒くさくなる…
設定とかあるのかな、もう少し弄くってみるけど。