2014-11-24 5 views
0

내 프로그램에서 GStreamer 1.0을 사용하여 파일에서 비디오를 재생합니다. 그리고 그것을 Gdk.Pixbuf에 출력하여 Image에 추가하여 표시하려고합니다. 하지만 제대로 사용하는 방법을 알아낼 수 없습니다. 여기Vala를 사용하여 GStreamer 비디오를 Gdk.Pixbuf로 출력하는 방법은 무엇입니까?

내가 어떻게 뭘하려하지만, 컴파일되지 않습니다 : 가능하면

this.pipeline = new Pipeline ("mypipeline"); 
this.src = ElementFactory.make ("filesrc", "video"); 
src.set("location", downloadFileName); 
this.sink = ElementFactory.make ("gdkpixbufsink", "sink"); 
this.pipeline.add_many (this.src, this.sink); 
this.src.link (this.sink); 

this.pipeline.set_state (State.PLAYING); 

this.videoPixbuf = sink.get("last-pixbuf") as Gdk.Pixbuf; 

당신이 어떻게 제대로 수행하는 날을 제안 할 수 있습니까? 또는 Gdk.Pixbuf를 사용하지 않고 다른 방법으로 어떻게 할 수 있습니까? 나는 단지 무엇을해야할지 모른다.

답변

3

편집 : 매튜 워터스는 당신은 Gtk/GST 요소를 제공 https://github.com/ystreet/gtkgst

"gtksink"요소가 앱의 비디오 위젯을 제공

public static void main (string[] args) { 
    X.init_threads(); 
    Gst.init (ref args); 
    Gtk.init (ref args); 

    var sink = Gst.ElementFactory.make ("gtksink", "sink"); 
    var playbin = Gst.ElementFactory.make ("playbin", "bin"); 
    playbin["video-sink"] = sink; 
    playbin["uri"] = "http://www.nicolas-hoffmann.net/animations/Cavernae_Terragen2.mp4"; 
    Gtk.Widget area; 
    sink.get ("widget", out area); 
    var win = new Gtk.Window(); 
    var bar = new Gtk.HeaderBar(); 
    bar.title = "Test"; 
    bar.show_close_button = true; 
    win.set_titlebar (bar); 
    win.add (area); 
    win.realize.connect (() => { 
      playbin.set_state (Gst.State.PLAYING); 
    }); 
    win.set_size_request (400, 300); 
    win.show_all(); 
    Gtk.main(); 
} 
관련 문제