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

Reply via email to