~~ petit lecteur video [ wxwidgets ----> wxmediactrl ] ~~

Description

En fait, le but de ce dev était, au départ, de lire des fichiers vidéos en n' utilisant que la librairie wxWIDGETS.Au bout du compte, le wxMediaCtrl lit les fichiers audios et vidéos donc, ce player peut lire aussi de la musique, mais comme vous pourrez le constater, il a été pensé pour la lectue de vidéos;

-Slider (gestion du temps);
-Boutons Play, Stop, Pause;
-le dialog de visualisation prends la taille du média a l' ouverture, ce dialog est sizable;
-utilisation d'un sizer;

Voila, c' est juste un p' tit exemple d' utilisation de wxMediaCtrl à améliorer bien entendu;
Il vous faudra probablement des codecs pour pouvoir regarder tous types de medias;
perso, j' use klite codec packs

Enfin, pour compiler les sources vous aurez besoin de wxDevCpp 6.8 beta (pour la gestion du volume)

téléchargez le .exe sur
http://satellitesound.free.fr/aSatAviPlayer.rar

Allé, Salut, god prog :-)

Source / Exemple :


//---------------------------------------------------------------------------
//
// Name:        SatAviPlayerFrm.cpp
// Author:      Nicolas Robert --> satellitesound@free.fr
// Created:     01/08/2005 12:12:35
//
//---------------------------------------------------------------------------

#include "SatAviPlayerFrm.h"

//----------------------------------------------------------------------------
// SatAviPlayerFrm
//----------------------------------------------------------------------------

BEGIN_EVENT_TABLE(SatAviPlayerFrm,wxFrame)
    EVT_TIMER(ID_TIMER,                              SatAviPlayerFrm::OnTimer)
	EVT_CLOSE(                                       SatAviPlayerFrm::SatAviPlayerFrmClose)
	EVT_MENU(ID_MNU_OUVRIR ,                         SatAviPlayerFrm::MnuouvrirClick)
	EVT_MENU(ID_MNU_QUITTER ,                        SatAviPlayerFrm::MnuquitterClick)
	EVT_BUTTON(ID_BUTTON1,                           SatAviPlayerFrm::Boutton1Click)
	EVT_BUTTON(ID_BUTTON2,                           SatAviPlayerFrm::Boutton2Click)
	EVT_BUTTON(ID_BUTTON3,                           SatAviPlayerFrm::Boutton3Click)
	EVT_COMMAND_SCROLL_THUMBTRACK(ID_SLIDER,         SatAviPlayerFrm::SliderThumbtrack)
	EVT_COMMAND_SCROLL(ID_SLIDER,                    SatAviPlayerFrm::SliderScroll)
	EVT_COMMAND_SCROLL_THUMBTRACK(ID_SLIDERVOL,      SatAviPlayerFrm::SlidervolThumbtrack)
	EVT_COMMAND_SCROLL(ID_SLIDERVOL,                 SatAviPlayerFrm::SliderScrollVol)
END_EVENT_TABLE()

SatAviPlayerFrm::SatAviPlayerFrm( wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style )
                                  : wxFrame( parent, id, title, position, size, style),
                                  m_timer(this, ID_TIMER)
{
    CreateGUIControls();
    m_timer.Start(24);
}

SatAviPlayerFrm::~SatAviPlayerFrm() {} 

IMPLEMENT_APP(SatAviPlayerFrmApp)

bool SatAviPlayerFrmApp::OnInit()
{
    SatAviPlayerFrm *Frame = new  SatAviPlayerFrm(NULL);
    SetTopWindow(Frame);
    Frame->Show(TRUE);		
    return TRUE;
}
 
int SatAviPlayerFrmApp::OnExit()
{
	return 0;
}

void SatAviPlayerFrm::CreateGUIControls()
{
	Slider =  new wxSlider(this, ID_SLIDER,0,0,10,wxPoint(10,20),wxSize(200,15)  , wxSL_HORIZONTAL|wxSL_AUTOTICKS);
	Slider->SetRange(0,10);
	Slider->SetValue(0);
    
    SliderVol = new wxSlider(this, ID_SLIDERVOL,0,0,10,wxPoint(320,2),wxSize(15,70)  , wxSL_VERTICAL|wxSL_AUTOTICKS|wxSL_INVERSE);
    SliderVol->SetRange(0, 10);
    SliderVol->SetValue(8);
    
	StatusBar =  new wxStatusBar(this, ID_STATUSBAR );
	StatusBar->SetFieldsCount(1);
	int StatusBar_Widths[1];
	StatusBar_Widths[0] = -1;
	StatusBar->SetStatusWidths(1,StatusBar_Widths);

	MenuBar =  new wxMenuBar( );
	wxMenu *ID_MNU_FICHIER_Mnu_Obj = new wxMenu(0);
	MenuBar->Append(ID_MNU_FICHIER_Mnu_Obj,_("Fichier"));
	
	ID_MNU_FICHIER_Mnu_Obj->Append(ID_MNU_OUVRIR,_("Ouvrir"),_(""), wxITEM_NORMAL);
	
	ID_MNU_FICHIER_Mnu_Obj->Append(ID_MNU_QUITTER,_("Quitter"),_(""), wxITEM_NORMAL);
	
	
	this->SetMenuBar(MenuBar);

	Button1 =  new wxButton(this, ID_BUTTON1, _(">"), wxPoint(280,20),wxSize(25,25));

	Button2 =  new wxButton(this, ID_BUTTON2, _("II"), wxPoint(250,20),wxSize(25,25));

	Button3 =  new wxButton(this, ID_BUTTON3, _("X"), wxPoint(220,20),wxSize(25,25));

	OpenFileDialog = new wxFileDialog(this, "Ouvrir un fichier..." , "" , "" , "", wxOPEN | wxHIDE_READONLY |  wxCHANGE_DIR  );
    wxFileDialog fd(OpenFileDialog);
    
    m_mediactrl = new wxMediaCtrl();
    m_dialog = new wxDialog(this, -1, "vidéo", wxPoint(0,0), wxSize(-1,-1), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX | wxMINIMIZE_BOX | wxTHICK_FRAME ,"dialogBox");
    m_dialog->SetBackgroundColour(wxColour(0, 0, 0));
        
    m_mediactrl->Create(m_dialog, ID_MEDIA, fd.GetPath(), wxPoint(0, 0), wxSize(1024,768));
        
    m_sizerv = new wxBoxSizer(wxVERTICAL);    
    m_sizerv->Add(m_mediactrl, 1, wxALIGN_CENTER|wxGROW, 0);
   
    m_sizerh = new wxBoxSizer(wxHORIZONTAL);    
    m_sizerh->Add(m_sizerv, 1, wxALIGN_CENTER|wxGROW, 0);
    
    m_dialog->SetSizer(m_sizerh);
    m_dialog->SetAutoLayout(true);
    
	this->SetStatusBar(StatusBar);
	this->SetSize(8,8,370,150);
	this->SetTitle(_("SatAviPlayer"));
	this->Center();
	this->SetIcon(wxNullIcon);
	this->SetBackgroundColour(wxColour(80, 100, 75));
    ////GUI Items Creation End
}

void SatAviPlayerFrm::SatAviPlayerFrmClose(wxCloseEvent& event)
{
    m_timer.Stop();
    m_mediactrl->Destroy();
    Destroy();
}
 
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  • MnuquitterClick
  • //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SatAviPlayerFrm::MnuquitterClick(wxCommandEvent& event) { m_timer.Stop(); m_mediactrl->Destroy(); Destroy(); } /*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  • MnuouvrirClick
  • ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SatAviPlayerFrm::MnuouvrirClick(wxCommandEvent& event) { wxFileDialog fd(OpenFileDialog); fd.SetMessage(_("Ouvrir un fichier vidéo")); if (fd.ShowModal()==wxID_OK) { if(!m_mediactrl->Load(fd.GetPath())) wxMessageBox(wxT("Load n' a pas marché")); if(!m_mediactrl->Play()) wxMessageBox(wxT("Play n' a pas marché")); resetmedia(); } } /*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  • reset
/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////8 void SatAviPlayerFrm::resetmedia() { m_basestatus = wxString::Format(_T("Taille(x,y):%i,%i ")_T("Longueur(Secondes):%u Vitesse:%1.1fx"),m_mediactrl->GetBestSize().x,m_mediactrl->GetBestSize().y,(unsigned)((m_mediactrl->Length()/1000)),m_mediactrl->GetPlaybackRate()); StatusBar->SetStatusText(m_basestatus); m_dialog->SetSize(wxSize(m_mediactrl->GetBestSize().x, m_mediactrl->GetBestSize().y)); m_dialog->Show(true); } /*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  • Mon timer
  • ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SatAviPlayerFrm::OnTimer(wxTimerEvent& event) { Slider->SetRange(0, m_mediactrl->Length()/1000); Slider->SetValue(m_mediactrl->Tell()/1000); } /*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  • gestion du temps par le slider
  • ///////////////////////////////////////////////////////////////////////////5///////////////////////////////////////8
void SatAviPlayerFrm::SliderThumbtrack(wxScrollEvent& event) { if(!m_timer.IsRunning())return; int time=Slider->GetValue()*1000; m_mediactrl->Seek(time); } void SatAviPlayerFrm::SliderScroll(wxScrollEvent& event) { SliderThumbtrack(event); } /*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  • gestion du volume par le slider
  • //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SatAviPlayerFrm::SlidervolThumbtrack(wxScrollEvent& event) { double volume = SliderVol->GetValue(); m_mediactrl->SetVolume(volume*0.1); } void SatAviPlayerFrm::SliderScrollVol(wxScrollEvent& event) { SlidervolThumbtrack(event); }

Conclusion :


#include <wx/zip>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.