ClutterGst 3.0 with Python

ClutterGst PyGI | PaePoi

以前こんなのを書いたけど

Clutter Gst 3.0.14 Reference Manual: Clutter Gst 3.0.14 Reference Manual

ClutterGst.VideoTexture なんて 3.0 の現在ではもう無い。
今はどうすれば ClutterGst を扱えるのかな?

そういえば Sushi は Gjs だったな。
一応、Sushi は Nautilus にて Space Key でプレビューするアプリね。
Fedora には最初から入っているよ。
だったらコイツのコードを参考にすればいいじゃないか。

sushi_gst

って VideoTexture のまんまや!
Nautilus で動画をプレビューすると緑色でやはり表示できない。

[sushi] viewer: gst: port to ClutterGst 3.0

見つけた、十月にはコミットされているはずなんだけどなぁ。
自力で置き換えして試してみる、Gjs は面倒だから Python で。

#!/usr/bin/env python3

import sys, gi
gi.require_version("Gtk", "3.0")
gi.require_version("ClutterGst", "3.0")
gi.require_version("GtkClutter", "1.0")

from gi.repository import Gtk, Gdk, ClutterGst, GtkClutter, Clutter

class ClPlayer(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self)
        # new
        self.actor = Clutter.Actor.new()
        self.content = ClutterGst.Aspectratio.new()
        self.player = ClutterGst.Playback.new()
        # set
        self.content.set_player(self.player)
        self.actor.set_content(self.content)
        self.actor.show()
        # size
        self.actor.set_width(320)
        self.actor.set_height(180)
        # add
        self.embed = GtkClutter.Embed()
        self.stage = self.embed.get_stage()
        self.stage.add_child(self.actor)
        self.add(self.embed)
        # play
        self.player.set_uri("file:///home/sasakima-nao/movie/kawasaki_h2r.mp4")
        self.player.set_playing(True)
        # show
        self.resize(320, 180)
        self.show_all()


    def do_delete_event(self, event):
        Gtk.main_quit()

#Clutter.init(sys.argv) # Error
GtkClutter.init(sys.argv)
ClutterGst.init(sys.argv)

win = ClPlayer()
Gtk.main()

cluttergst3

思っていたより簡単だった。
よしコレで我が Y901x の GtkHeaderBar 化に取り掛かりできそうだ。
いやまあ、いいかげんに自分で気になってきたので。

実は今まで Ubuntu 環境での Clutter がよく解らないので避けていた。
GNOME プロジェクトの成果物依存から脱却したいココは絶対に導入しないだろうし。

Ubuntu Sushi その1 – Nautilusでプレビューを行うアプリの紹介・Sushiの使い方 – kledgeb

でも Sushi を入れるだけで依存関係から必要な環境がそろうようだ。
だったら Clutter も問題ないか、多分まだ 3.0 じゃない気がするけど。