in reply to Use widget MPlayerEmbed in Layout container... I can't see the video

Hi, I havn't had any luck with those modules either. Here is a manual way to run mplayer in Gtk2. This works for me, but mplayer always comes in and takes the whole window. If you can figure that out .... :-)

Notice you need killfam for completely killing mplayer's $pid.

Updated code for killfam, a few minutes after initial post, soory :-)

#!/usr/bin/perl use warnings; use strict; use Glib qw/TRUE FALSE/; use Gtk2; use Gtk2 '-init'; use Proc::Killfam; 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); 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 { killfam 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 $init = 'z-men.mpg'; $pid = open(MP, "| mplayer @options $init >/dev/null 2>&1 "); syswrite(MP, "loadfile $mpg\n"); } ########################################

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh
  • Comment on Re: Use widget MPlayerEmbed in Layer container... I can't see the video
  • Download Code

Replies are listed 'Best First'.
Re^2: Use widget MPlayerEmbed in Layer container... I can't see the video
by darkladen (Initiate) on May 18, 2011 at 20:12 UTC
    Well, thanks for your code but not working. When loading the mplayer does nothing and not sends me an error message. I need to load Mplayer and show over it, a image. The ideal way would be using a widget "Layout" or "Fixed" but when I load a video over either of these widget but it is playing, I can not see.
        Hi, my platform is Ubuntu 10.10.
        Hello, I tell you that mplayer if I work very well in my distro, I even work on GTK2-perl but only when the container is of the window, vbox, hbox. The problem is when I want to use inside a container type LAYOUT and the hierarchy of the code is something like this:

        * With these examples work but I see no video, only audio.
        # Window-> vbox-> Layout-> MPlayerEmbed (not working)
        # Window-> Layout-> vbox-> MPlayerEmbed (not working)

        * This example works but does not meet my purpose.
        # Window-> vbox-> MPlayerEmbed (works but does not help in this way)

        The code I've left, works to a degree that is stuck. This is what I have in your sample code:
        #!/usr/bin/perl -w use warnings; use strict; use Glib qw/TRUE FALSE/; use Gtk2; use Gtk2 '-init'; use Proc::Killfam; 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); 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 { killfam 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', '-x 600', '-y 450', '-really-q +uiet', '-wid $xid' ); my $mpg = 'my_video.mp4'; my $init = 'my_video.mp4'; $pid = open(MP, "| mplayer @options $init "); syswrite(MP, "loadfile $mpg\n"); } ########################################
        The script runs fine but not up mplayer.