Re: mplayer-embedding



On Sun, 31 Jul 2005 12:00:36 -0400 (EDT)
gtk-perl-list-request gnome org wrote:

Date: Sun, 31 Jul 2005 13:42:24 +0200
From: Bo?tjan ?peti? <igzebedze auch eu org>
Subject: mplayer?

hi
is there an easy way of embeding mplayer into gtk2?
regards, bostjan

Hi, I did it with Tk, and had some success embedding mplayer.
See script below.

First of all, I took an embedding script I was testing with dillo,
and just thru the mplayer command into it. It works, but I've included
no frills. To see a "frill-full" Tk version, see

http://perlmonks.org?node_id=417164

You have to use some special features of mplayer (see it's docs) 
to run it as a slave.

Here is a script that runs on my machine. You will need an init.mpg
to give an initial screen, until you load some file. See the above perlmonk
link to get the sample files I use.

P.S. I played alot with embedding and gtk2, but have only got
the mouse to function in the embedded window, no keys connect.

##########################################################
#!/usr/bin/perl
use warnings;
use strict;
use Glib qw/TRUE FALSE/;
use Gtk2;
use Gtk2 '-init';

my $pid;  #global for killing mplayer on exit
my $window = Gtk2::Window->new('toplevel');
$window->set_title('Embed test');
$window ->signal_connect( 'destroy' => \&delete_event );
$window->set_border_width(10);
$window->set_size_request(600,600);

set_style();

my $vbox = Gtk2::VBox->new( FALSE, 6 );
$window->add($vbox);
$vbox->set_border_width(2);

my $hbox= Gtk2::HBox->new( FALSE, 6 );
$vbox->pack_end($hbox,FALSE,FALSE,0);
$hbox->set_border_width(2);

$vbox->pack_end (Gtk2::HSeparator->new, FALSE, FALSE, 0);

my $vbox1 = Gtk2::VBox->new( FALSE, 6 );
$vbox1->set_size_request(600,500);
$vbox->pack_end($vbox1,FALSE,FALSE,0);
$vbox1->set_border_width(2);

my $button = Gtk2::Button->new_from_stock('gtk-quit');
$hbox->pack_end( $button, FALSE, FALSE, 0 );
$button->signal_connect( clicked => \&delete_event );

my $button1 = Gtk2::Button->new('Mplayer');
$hbox->pack_end( $button1, FALSE, FALSE, 0 );
$button1->signal_connect( clicked => \&do_mplayer );

$window->show_all();
Gtk2->main;
#####################################
sub delete_event {
kill 9, $pid;
Gtk2->main_quit;
return FALSE;
}  

##########################################
sub do_mplayer{

    my $gdkwindow = $window->window;
    print "gdkwin->$gdkwindow\n";    

    my $gdkwindow1 = $vbox1->window;
    print "gdkvbox->$gdkwindow1\n";    
    my $xid = $gdkwindow1->XWINDOW;

    print "xid->$xid\n";

    my $url ='';

my @options = (  '-slave','-loop 0', '-zoom',
                 "-x 600", "-y 450",
                  '-really-quiet',
                   "-wid $xid",
               );

my $mpg = 'z-men.mpg';
my  $pid = open(MP, "| mplayer @options  init.mpg >/dev/null 2>&1 "); 
syswrite(MP, "loadfile $mpg\n");


}
########################################################################
sub set_style{
Gtk2::Rc->parse_string(<<__);

style "normal" {
font_name ="serif 12"
}

style "my_text" {
font_name ="sans 12"
text[NORMAL] = "#FFAA00"
base[NORMAL] = "#000000"   
GtkTextView::cursor-color = "red"
}

widget "*" style "normal"
widget "*Text*" style "my_text"
__
}
#######################################################################













-- 
I'm not really a human, but I play one on earth.
http://zentara.net/japh.html



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]