in reply to Re^3: Use widget MPlayerEmbed in Layer container... I can't see the video
in thread Use widget MPlayerEmbed in Layout container... I can't see the video

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.
  • Comment on Re^4: Use widget MPlayerEmbed in Layer container... I can't see the video
  • Download Code

Replies are listed 'Best First'.
Re^5: Use widget MPlayerEmbed in Layer container... I can't see the video
by zentara (Cardinal) on May 21, 2011 at 13:55 UTC
    work on GTK2-perl but only when the container is of the window, vbox, hbox.

    Well my guess is that the wid ( X window id ) support only allows insertion into the basic container type.

    To delve deeper into your Layer container idea, I would ask on the gtk+ c list and the Perl/Gtk2 maillist. I know nothing about Layer widgets.


    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh