Hi Guys,
The list of files needed to GStreamer from wxMediaCtrl *or* Perl seems to
be:
gstreamer0.10-ffmpeg
libgstreamer0.10-0
libgstreamer-perl
libgstreamer-plugins-base0.10-0
gstreamer0.10-x
gstreamer0.10-plugins-good
gstreamer0.10-plugins-base
The following code then runs on Windows and Linux:
#!/usr/bin/perl -w --
use Wx 0.15 qw[:allclasses];
use strict;
package MyFrame;
use Wx qw[:everything];
use base qw(Wx::Frame);
use strict;
sub new {
my( $self, $parent, $id, $title, $pos, $size, $style, $name ) = @_;
$style = wxDEFAULT_FRAME_STYLE unless defined $style;
$self = $self->SUPER::new( undef, wxID_ANY, "Draw/Video Controls",
wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, "" );
$self->SetTitle("Draw/Video Controls");
# Define parents of split
$self->{Ctl_Post_Exam_Videos_Sizer_2} =
Wx::BoxSizer->new(wxVERTICAL); # Top-level left-hand sizer
(contains media)
# wxMEDIABACKEND_DIRECTSHOW Use ActiveMovie/DirectShow. Requires
wxUSE_DIRECTSHOW to be enabled, requires linkage with the static library
strmiids.lib, and is available on Windows Only.
# wxMEDIABACKEND_QUICKTIME Use QuickTime. Windows and Mac Only. NOTE:
On Mac Systems lower than OSX 10.2 this defaults to emulating window
positioning and suffers from several bugs, including not working correctly
embedded in a wxNotebook.
# wxMEDIABACKEND_MCI Use Media Command Interface. Windows Only.
# wxMEDIABACKEND_GSTREAMER Use GStreamer. Unix Only.
# wxMEDIABACKEND_WMP10 Windows Media Player 9 or 10
# wxMEDIABACKEND_REALPLAYER Realplayer
# Blank Allow to choose own player
$self->{Ctl_Videos_Media}= Wx::MediaCtrl->new( $self, wxID_ANY, '',
wxDefaultPosition, wxDefaultSize,0, );
$self->{Ctl_Videos_Media}->Show( 1 );
$self->{Ctl_Videos_Media}->ShowPlayerControls(wxMEDIACTRLPLAYERCONTROLS_DEFA
ULT);
# or
wxMEDIACTRLPLAYERCONTROLS_NONE
#
wxMEDIACTRLPLAYERCONTROLS_STEP
#
wxMEDIACTRLPLAYERCONTROLS_VOLUME
#
wxMEDIACTRLPLAYERCONTROLS_DEFAULT
$self->{Ctl_Post_Exam_Videos_Sizer_2}->Add(
$self->{Ctl_Videos_Media}, 1, wxEXPAND|wxALL, 5 );
$self->{button} = Wx::Button->new( $self, -1, 'Load a media file' );
$self->{Ctl_Post_Exam_Videos_Sizer_2}->Add($self->{button}, 0, 0,
0);
$self->SetSizer($self->{Ctl_Post_Exam_Videos_Sizer_2});
$self->Layout();
Wx::Event::EVT_MEDIA_LOADED( $self, $self->{Ctl_Videos_Media},
\&on_media_loaded );
Wx::Event::EVT_BUTTON( $self, $self->{button}, \&on_media_load );
return $self;
}
sub on_media_loaded {
my( $self, $event ) = @_;
Wx::LogMessage( 'Media loaded, start playback' );
$self->{Ctl_Videos_Media}->Play;
}
sub on_media_load {
my( $self, $event ) = @_;
my $file = Wx::FileSelector( 'Choose a media file' );
if( length( $file ) ) {
$self->{Ctl_Videos_Media}->LoadFile( $file );
}
}
package main;
unless(caller){
local *Wx::App::OnInit = sub{1};
my $app = Wx::App->new();
Wx::InitAllImageHandlers();
my $frame_1 = MyFrame->new();
$app->SetTopWindow($frame_1);
$frame_1->Show(1);
$app->MainLoop();
}
Thanks and regards
Steve