Bonjour à tous
J'ai développez un logiciel qui entre autre lit des vidéos.
J'aimerais savoir s'il est possible de lire dans un TMediaPlayer des vidéo en .mov car les utilisateurs ont des vidéos dans ce format.
Merci d'avance
Bonjour à tous
J'ai développez un logiciel qui entre autre lit des vidéos.
J'aimerais savoir s'il est possible de lire dans un TMediaPlayer des vidéo en .mov car les utilisateurs ont des vidéos dans ce format.
Merci d'avance
Salut Kurul1
J'ai trouvé ceci http://www.developpez.net/forums/d21...-tmediaplayer/
A+
Je l'avais trouvé ce post mais ça n'apporte pas grand chose.
Installer les codecs quicktime.
D'accord mais tu les trouves ou car a part installer quicktime, ce que j'ai déjà fait, je ne vois pas ou les trouver.
Je crois qu'il faut telecharger "quicktime alternative" pour n'avoir que les codecs.
Telecharger les codecs ici
ou ici telecharger les codecs
A+
je viens d'essayer mais cela ne lit pas la vidéo.
J'ai donc installer le quicktime alternative
Je sélectionne ma vidéo et la, cela me met Periphérique MCI non ouvert ou format non reconnu.
J'ai regardé du côté du DeviceType du MediaPlayer et j'ai essayé les différents type sans aucun résultats.
lSalut
dans le cas où on a des video recalcitrante
essayer d abord vlc , son activex marche sous bcb6 et est dispo à l installe du player
ou en filtrant l extension creer un html avec un <object class ....
voilà ikl ya pas d autre solution
Après quelques tests, j'arrive à lire certains fichier mov avec l'activex de VLC mais pas toutes et justement, celle qu'il faut que je lise ne se lisent pas.
De plus j'ai un souci, VLC affiche en gros au milieu de la vidéo, le nom du fichier, ce qui est très embètant.
Sinon j'ai vu que j'avais accès à un activex QTControl.
J'ai essayé et j'arrive à lancer la vidéo, par contre, elle n'est pas fluide du tout.
Est-ce que quelqu'un à déjà utilisé cet ActiveX et aurait des petites astuces.
Merci d'avance pour votre aide
Bon alors pour ce que cela intéresse, j'ai réussi à lire ma vidéo avec l'ActiveX QuickTime mais il reste encore quelques petits problèmes.
Je n'arrive pas à déterminer quand la vidéo et terminer car je voudrais fermer l'ActiveX quand la lecture se termine.
J'aimerais également savoir ou je me trouve dans la vidéo car je dois envoyer un signal quand j'ai atteins une certaine position dans la vidéo et pour l'instant je ne vois pas comment faire.
Si quelqu'un à une idée, je suis preneur
Sinon voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 // On crée une boite de dialogue pour sélectionner le fichier TOpenDialog *OpenDialog = new TOpenDialog(Form1); // On définit le filtre de la boite de dialogue OpenDialog->Filter = "Vidéo (*.mov;*.avi)|*.mov;*.avi"; // Si l'utilisateur clique sur Ok if(OpenDialog->Execute()) { // On marque que le Panel est un double buffer Panel->DoubleBuffered = true; // On charge le plugin Quicktime TQTControl *QT = new TQTControl(Panel); Application->ProcessMessages(); // On renseigne le parent du control QT->Parent = Panel; Application->ProcessMessages(); // On cache l'accès au contrôle QuickTime (la barre et les boutons) QT->MovieControllerVisible = false; Application->ProcessMessages(); // On spécifie le fichier associé QT->FileName = OpenDialog->FileName; Application->ProcessMessages(); // On spécifie que le Contrôle QT remplis le Panel QT->SetBounds(0, 0, Panel->Width, Panel->Height); Application->ProcessMessages(); // On marque que la vidéo se lit automatiquement QT->AutoPlay = WideString(1).c_bstr(); Application->ProcessMessages(); }
J'ai résolu mon problème pour la fin de la vidéo
J'ai mis un timer pendant la lecture de la vidéo et il ferme la vidéo quand on a atteint la fin comme ceci
J'ai aussi réussi à trouver les informations concernant la vidéo en tatonant un peut sur toutes les propriétés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // Méthode déclancuée lorsque le timer Quicktime se termine void __fastcall TForm::OnTimerQuicktime(TObject *Sender) { // Si l'on à atteint la fin de la vidéo if(QT->Movie->Time == QT->Movie->EndTime) { // On arrête le timer Timer->Enabled = false; Timer->OnTimer = NULL; Timer->Interval = 0; // on arrete la lecture QT->Movie->Stop(); // on marque que la vidéo n'est plus en autoplay QT->AutoPlay = WideString('0').c_bstr(); // on ferme le composant Quicktime delete QT; QT = NULL; } Application->ProcessMessages(); }
Mais il me reste un souci. Je dois lire plusieurs vidéo Quicktime dans mon programme, la première lecture fonctionne bien mais la deuxième me fait un accès violation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int Largeur = QT->Movie->Width; int Hauteur = QT->Movie->Height; float Frequence = QT->Movie->StaticFrameRate; double Duree = ((double)(QT->Movie->EndTime)) / ((double)(QT->Movie->TimeScale)); double NbImages = Video->Infos->Duree * double(QT->Movie->StaticFrameRate);
J'ai peut être oublié quelques chose lorsque le termine la lecture de ma première vidéo, Est-ce que quelqu'un verrais d'où peut venir le problème
Personne ne peut m'aider car je suis vraiment coincé là.
J'ai beau triturer le Control dans tous les sens, j'ai un accès violation à la deuxième lecture
Balances qqs videos et tes sources , je materai çà
C est presque un sujet que j ai dejà traité
rapidshare ou autres fera l affaire
Mais qtControl est un activeX fourni avec quicktime , je l ai pas
QTControl est l'activeX que tu peux importer dans BDS. mais il faut que soit Quicktime soit Quicktime alternative soit installé sur ton PC.
Pour les vidéos, je ne peux pas t'envoyer mes vidéos car ce sont des vidéos de travail et je ne peux pas les distribuer.
Sinon voilà le code, je l'ai simplifié pour te mettre uniquement ce qui nous intéresse ici.
Merci pour ton aide
Salut
Tu peux pas m enoyver des petits samples en .mov ( 10 15 secondes max ) ?
J en ai trouver une mais j ai rien pour la decouper
Je suis désolé mais j'ai que ça comme vidéo en mov et elles font 30s a peu prèt
Tu peux les récupérer ici
Pas eu trop le temps ces derniers jours
Resultat , pas d erreur en changeant quasi rien à ton code
J utilise la v1 de l activex apple quick time control 2.0 ( version 1.0 ) sous c++builder 6
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "C:\Program Files\Borland\CBuilder6\Imports\QTOControlLib_OCX.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int fois = 0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Declencher(); } //--------------------------------------------------------------------------- void TForm1::Declencher() { if (fois<5) { fois++; Lire(fois); } else Panel1->Caption="Fini" ; } //--------------------------------------------------------------------------- void TForm1::Lire(int fois) { AnsiString CheminVideo = ExtractFilePath(Application->ExeName); CheminVideo += fois; CheminVideo += ".mov"; // On rend le Panel visible Panel1->Visible = true; // On charge le plugin Quicktime TQTControl *QT = new TQTControl(Panel1); QT->Parent = Panel1; QT->MovieControllerVisible = true; QT->FileName = CheminVideo; QT->Movie->Play(); // On met le booléen qui marque que l'on est en lecture à true bool LectureVideo = true; do { // Si l'on à atteint la fin de la vidéo if(QT->Movie->Time == QT->Movie->EndTime) { // On marque que l'on a fini la lecture de la vidéo LectureVideo = false; } Application->ProcessMessages(); } // Tant que l'on est en LectureVideo while(LectureVideo); // on arrete la lecture QT->Movie->Stop(); Application->ProcessMessages(); // on ferme le composant Quicktime delete QT; QT = NULL; Declencher(); } //---------------------------------------------------------------------------
En fait je pense avoir résolu mon problème.
Il semblerais que ce soit le codec utilisé pour les vidéos qui fasse planter et non le code qui comme tu me l'a confirmer est correct.
J'ai également de mon côté fait des tests avec les vidéos que je t'ai fait parvenir et cela fonctionne sans souci.
En fait, je peux lire n'importe quelle vidéo, même celle qui plante, mais dès que j'en lit une, je peux plus rien lire derrière.
J'en ai informer la boite qui se charge de nos vidéos et on m'a répondu que cela pouvait venir du Codec, ils sont en train de les ré-encoder et on va tester cela.
Je te tiens au courant
Partager