|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
~~ PETIT LECTEUR VIDEO [ WXWIDGETS ----> WXMEDIACTRL ] ~~
Information sur la source
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
- //---------------------------------------------------------------------------
- //
- // 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);
- }
//---------------------------------------------------------------------------
//
// 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
Historique
- 07 août 2005 22:59:55 :
- 1 apparence 1 peu plus simpa
- 08 août 2005 00:20:47 :
- +screenshot
- 12 août 2005 03:04:30 :
- Modif du titer
- 26 août 2005 02:15:57 :
- -+ gestion du volume (hum, ca marche pas terrible mais bon, ca marche)
- support des themes xp ( que j' avait zappé)
- 28 août 2005 06:01:23 :
- modif adresse de l'exe
- 03 septembre 2005 16:28:47 :
- - meilleure gestion des sizers, on peut maintenant maximizer le dialogue de visualisation; bientôt un full screen;
- 03 septembre 2005 19:23:13 :
- -Gestion du volume avec la roulette de la souris, que j' avais zappé;
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Mot de passe fichier audio/video [ par goutbouyo ]
Salut,Est -il possible de faire un programme en C (win32 ou non) qui demande un mot de passe à l'ouverture d'un fichier audio ou vidéo qui existe déjà
lecteur enregistreur video [ par blanccc ]
Bonjour tout le monde,Je suis novice en C++ et je cherche le moyen de prendre un flux video en entrée provenant d'une camera numerique, de l'affi
[wxWIDGETS] wxMediaCtrl + avi [ par satellite34 ]
salut!petite question a 10 piastres:je veux lire un avis avec la librairie wxWIDGETS et sa fonction wxMediaCtrl.Quelqu' un pourrai - t-il me donner la
jouer data depuis Buffer Audio ? [ par cybermax62 ]
bjr, je veux jouer de l'audio issu d'une video .avi. en fait c pour jouer une video sur une surface DDraw, mais bon c pas important ca.j'utilise vfw32
Lecteur video basique [ par adess00 ]
BonjourJ ai fait un algo de compression video et donc je voudrais maintenant coder un lecteur pour pouvoir faire des tests.Je voudrais donc savoir com
lecteur video [ par kain31 ]
Bonjour tout le monde, Actuellement ,je developpe un lecteur video en C++. Ce lecteur devra etre capable de lire a la suite deux fichiers videos.Un pe
developper un lecteur audio en ligne [ par flofloo ]
bonjour tout voila je me suis leve ce bon matin et je me suis dit flo et si tu developper un serveur ki partagerais de la musik en ligne a tes clients
recherche d'un code source d'un lecteur video [ par ingenioura ]
Salut, je cherche un programme en utilisant la bibliothèque Qt pour afficher une séquence vidéo et merci
inserer lecteur video sous builder c++ [ par fcolh ]
FcolHbonsoir , j'aimerais savoir si c'est possible d'inclure un lecteure video sous builder c++.et si oui quelle est la meilleure solution et surtout
Lecteur MPEG streaming [ par matge ]
Bonjour,Je realise un player qui enregistre un flux multicast RTP.Je stocke la video au format MPEG dans un fichier a l aide d un Thread.J aimerais re
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

LG KP501
Entre 9€ et 159€
|