I'm sorry you are having trouble getting it to work with Gtk2. Are you on MSWIndows? :-)
Anyways, try this Tk controller for mplayer, it may show you a few tricks. Perl/Tk front-end to mplayer
| [reply] |
Hi, my platform is Ubuntu 10.10.
| [reply] |
It should work on Ubuntu. What error or operational error are you getting?
For what it's worth, I do recall having problems with many linux distribution's compilation of mplayer and mencoder, and it's worthwhile to get the mplayer source code, read the compilation instructions in the various README files, and compile it yourself. Mplayer has some patented code which you can use personally, for no profit, but you can't sell it, so the linux vendors release weak and broken mplayer binaries. Just a thought. :-)
| [reply] |
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. | [reply] [d/l] |
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.
| [reply] |