Conteneur QuickTime® : plugin pour contrôler des films et des sons QuickTime®
Date de publication : Novembre 2005
Par
Thomas Maul (4D Germany)
Ce plug-in permet à un développeur d'ajouter des fonctionnalités QuickTime dans une application 4D. vous
pourrez jouer une vidéo QuickTime ou de la musique ! Le plug-in QuickTime supporte tous les films et
formats sonores supportés par QuickTime. Avec le contrôleur standard de QuickTime, seul un minimum de
code est requis ; les commandes optionnelles permettent le plein accès au plug-in, de sorte que vous puissiez
créer votre propre interface utilisateur.
Liste des fonctionnalités
Vue d'ensemble
Video
Audio
Description des commandes
QTSetMovie
QTSetControl
QTGetControl
Commandes sans interface utilisateur
QTPlaySound
QTStopPlay
Base exemple
Liste des fonctionnalités
Le plug-in autorise les fonctionnements suivants :
- zone externe pour afficher le film et le contrôleur
- cacher/afficher le contrôleur
- cacher/afficher le volume dans le contrôleur
- cacher/afficher le bouton "pas à pas" dans le contrôleur
- sélection d'une partie du film
- activer/ désactivé "Jouer sélection"
- jouer à vitesse normale/Stop
- jouer à vitesse libre avant/arrière
- pas à pas avant/arrière ou par quantité indiquée des trames
- unité de temps du film (pour la plupart des films : 600 unités/seconde)
- longueur du film (divisez par l'unité de temps du film pour obtenir la longueur en secondes)
- indication de position (entre 0 et longueur du film)
- indication de début de sélection
- indication de longueur de sélection
- indication de volume
- obtention de la largeur et de la hauteur initiales du film
- zoom (ajustement, proportionnel, zoom libre)
- lecture en boucle (aucune boucle, boucle, Palindrome)
- jouer son (pour jouer des sons MP3 courts, comme le bip) sans formulaire ni zone externe.
Vue d'ensemble
Pour avoir une idée des fonctionnalités, lancez la base exemple :

Interface de la base exemple
Video
Utilisez le bouton "Ouvrir" pour choisir un film sur votre disque dur. Le film sera affiché dans la partie
supérieure de l'écran. Notez que vous pouvez retailler le formulaire et que la zone QuickTime® sera retaillée
en proportion. Utilisez le bouton radio "Zoom" pour afficher la zone QuickTime® proportionnellement. Par
exemple, saisissez 25% pour un affichage réduit. La taille maximum du zoom dépend de la taille de la zone,
et si les valeurs sont trop grandes, elles seront automatiquement réduites.
Utilisez le contrôleur pour jouer des films ou des fichiers musicaux, changez la position du curseur ou
changez le volume. La zone de contrôle offre une série de cases à cocher qui permettent de cacher différents
éléments d'interface. Les boutons du groupe "Jouer" vous permettent de gérer le film pas à pas (avant ou
arrière) même si le contrôleur est caché.
Le second groupe de boutons dans la partie basse du dialogue permet un contrôle plus fin de la zone. Tout
d'abord, cliquez sur le bouton "Mettre à jour". Le code de ce bouton lit le paramétrage courant de la zone et met à jour toutes les valeurs d'affichage. Modifiez le volume à l'aide du thermomètre proposé. Si le
contrôleur présente l'icône de volume, vous pouvez vérifiez que cet icône montre la nouvelle valeur.
Utilisez également le thermomètre Position pour vous déplacer dans la vidéo. La règle Vitesse vous permet
de contrôler la vitesse. Si la vidéo est arrêtée, la règle est positionnée à 0. Déplacez-la sur la droite pour
avancer. Plus vous déplacerez la règle vers la droite, plus vous jouerez vite. Déplacez la règle vers la gauche
pour repartir en arrière, et jouer de même plus lentement ou plus vite. Le champ "Unité" vous donne l'unité
de base de la vidéo sélectionnée. Beaucoup de vidéo utilise la valeur "600 par seconde". Le champ
"Longueur" vous donne la longueur de la vidéo. La vidéo dans la copie d'écran indique une valeur de
"196200", divisée par l'unité de base (600), retourne la longueur en secondes (327 secondes) de la vidéo.
Enfin, pour jouer simplement une partie de la vidéo, cochez le bouton "Autoriser l'édition". Choisissez la
sélection en utilisant CLIC pour début et SHIFT CLIC pour fin.

Un clic sur le bouton "Mise à jour" lira les données sélectionnées et affichera les valeurs correspondantes
dans les champs Sélection et Longueur.
Dans notre exemple, la sélection commence à l'unité 69 575 (soit 69 575/600 = 115,95), cela signifie que la
sélection commence à la 115e seconde), la sélection fait 49 439 unités, c'est-à-dire environ 83 secondes.
 |
Note
Vous pouvez aussi indiquer manuellement la sélection en saisissant directement la valeur dans les
champs Sélection ou Longueur.
|
Si vous avez cliqué sur le bouton "Jouer Sélection", seule la sélection sera jouée. En utilisant les boutons
Boucle, Pas de boucle, Palindrome, vous pouvez choisir si la vidéo s'arrête une fois terminée, si elle repart
au début de la sélection ou rejoue en arrière à la vitesse standard jusqu'au début de la sélection puis rejoue
vers l'avant et ainsi de suite.
Audio
Si le fichier sélectionné n'est pas une vidéo mais un fichier musical, la zone QuickTime® reste vide mais
affiche le contrôleur (s'il est déclaré visible). Ainsi vous pouvez contrôler la position, la sélection, la vitesse,
la lecture en boucle, palindrome, etc.
Description des commandes
Toutes les commandes, excepté QTPlaySound et QTStopSound nécessitent un affichage par l'intermédiaire
d'un formulaire (utilisation d'un dialogue, modification d'enregistrement, etc...) avec une zone externe
QTContainer. Le premier paramètre de ces commandes est le nom de la zone externe.
QTSetMovie
QTSetMovie(Zone;CheminAccèsDocument) -> CodeErreur
| Paramètre |
Type |
Description |
| Zone |
Entier long |
Zone QTContainer |
| CheminAccèsDocument |
Texte |
Chemin d'accès complet vidéo ou fichier son |
| CodeErreur |
Entier long |
Code d'erreur (0= pas d'erreur) |
Description
La commande
QTSetMovie est la première commande nécessaire à appliquer à une zone. Elle spécifie la
vidéo ou fichier son qui doit être ouvert.
Résultat
Si la vidéo s'est correctement ouverte, la fonction retourne 0. Sinon une erreur est renvoyée :
-1 : pas de zone spécifiée
-2 : la zone spécifiée n'est pas une zone QTContainer
-3 : le chemin d'accès est supérieur à 255 caractères
-43 : fichier non trouvé
-33 à -84 : voir le chapitre
Erreurs du gestionnaire de fichiers du système (documentation 4D)
QTSetControl
QTSetControl (Zone;Sélecteur;Valeur) -> CodeErreur
| Paramètre |
Type |
Description |
| Zone |
Entier long |
Zone QTContainer |
| Sélecteur |
Entier long |
Code de la fonction à écrire |
| Valeur |
Entier long |
Valeur du paramètre |
| CodeErreur |
Entier long |
Code d'erreur (0 = pas d'erreur) |
Description
La commande QTSetControl vous permet de changer la valeur de plusieurs fonctions du container. De
nombreuses fonctionnalités peuvent être lues et écrites, certaines peuvent seulement être lues.
Le paramètre Sélecteur désigne les paramètres à écrire. Le plug-in vous offre des constantes prédéfinies qui
sont dans le thème QTControlCommands :
| Constantes |
Sélecteur |
Description |
| QTPlay |
1 |
1 pour jouer en avant, à vitesse standard. 0 pour stopper. Ecriture
seulement. Utilisez QTSpeed pour lire le statut courant. |
| QTStep |
2 |
Déplace la trame courante du nombre indiqué, en avant ou en arrière
(nombre négatif). |
| QTGoto |
3 |
Position courante de la vidéo, en unité de la vidéo. Doit être compris
entre 0 et QTGetlength. Notez que chaque position doit afficher un
nombre différent. Lecture/écriture. |
| QTVolume |
4 |
Indique le volume du film. Valeur entre 0 et 255. Lecture/écriture. |
| QTController |
5 |
1 pour montrer le contrôleur, 0 pour le cacher. Lecture/écriture |
| QTVolumeIcon |
6 |
1 pour montrer l'icône de volume, 0 pour le cacher. Lecture/écriture |
| QTStepIcon |
7 |
1 pour montrer les icônes de pas à pas, 0 pour les cacher.
Lecture/écriture |
| QTSpeed |
8 |
Commande la vitesse du film. 0 = arrêt, 5 = demi, 10 = normale, 20
= double vitesse en avant. Nombres négatifs pour aller en arrière.
Lecture/écriture. |
| QTGetLength |
9 |
Nombre d'unités du film. Divisez par QTGetTimeScale pour obtenir
la longueur en secondes. Lecture seulement. |
| QTLoop |
10 |
0 = boucle, 2 = aucune boucle, 1 = Palindrome (joue en avant jusqu'à
la fin, puis vers l'arrière jusqu'au début, et repart en avant jusqu'à la
fin, ...et ainsi de suite. Lecture/écriture |
| QTSize |
11 |
Retaille l'affichage du film.
0 = échelle à adapter. -1 = échelle proportionnelle
> 0 = zoom en %, comme 100=100%. La valeur maximum est
l'échelle proportionnelle, le film ne peut pas être affiché plus grand
que la zone. Lecture/écriture. |
| QTGetTimeScale |
12 |
Unités par seconde du film. La plupart des films utilise 600 unités
par seconde. Lecture seulement. |
| QTGetMovieWidth |
13 |
Retourne la largeur initiale du film en Pixel. Lecture seulement. |
| QTGetMovieHeigth |
14 |
Retourne la hauteur initiale du film en Pixel. Lecture seulement. |
| QTSelectionStart |
15 |
Se positionne au début de la sélection de film (voyez
QTPlaySelection et QTEditSelection). La valeur doit être comprise
entre 0 et QTGetLength dans l'unité du film. Lecture/écriture. |
| QTSelectionLength |
16 |
Indique la longueur de la sélection du film. La valeur doit être
inférieure à la différence entre QTGetLength - QTSelectionStart.
Lecture/écriture. |
| QTPlaySelection |
17 |
1 permet le mode PlaySelection. Permet seulement de jouer la
sélection, pas la totalité du film. Lecture/écriture |
| QTEditSelection |
18 |
Permet avec le contrôleur de choisir une partie du film. cette option
change le curseur du contrôleur. En utilisant les touches
Command/Ctrl clic, l'utilisateur peut choisir une partie du film. La
sélection peut être aussi être choisie avec les options
QTSelectionStart et QTSelectionLength. Ces valeurs ne peuvent être
utilisées que dans le cadre d'un QTPlaySelection. Lecture/écriture. |
Résultat de la fonction
Si le film a été ouvert avec succès, la fonction renvoie 0. Sinon ce peut être une des erreurs suivantes :
-1 aucune zone n'a été indiquée
-2 la zone indiquée n'est pas une région de QTContainer
-3 aucun film n'est ouvert
-4 le media ne supporte pas les actions du contrôleur (Image)
QTGetControl
QTGetControl(Zone ; Sélecteur ; valeur) - > CodeErreur
| Paramètre |
Type |
Description |
| Zone |
Entier long |
QTContainer de zone |
| Sélecteur |
Entier long |
Code de la fonction à lire |
| Valeur |
Entier long |
Valeur du paramètre |
| CodeErreur |
Entier long |
Résultat de fonction (0 = aucune erreur) |
Description
La commande QTGetControl vous permet de lire la valeur courante de plusieurs fonctions
d'un conteneur de film.
Le paramètre Sélecteur indique le paramètre à lire. Le plug-in vous offre les constantes prédéfinies suivantes,
qui sont dans le thème QTControlCommands. Pour une description voir la commande QTSetControl.
Résultat de la fonction
Voir la commande précédente QTSetControl
Commandes sans interface utilisateur
Les commandes QTPlaySound et QTStopSound vous permettent de jouer un son sans interface utilisateur,
vous n'avez pas besoin d'un formulaire ou d'une zone QTContainer.
Le but est de jouer un son (pas un film !) comme la commande 4D, JOUER SON.
La commande de QTPlaySound n'est pas supposée être utilisé pour jouer des fichiers de musique, mais des
sons courts, comme un bip. QTPlaySound est exécuté en mode synchrone c'est-à-dire que le processus est
arrêté pendant que le son est joué. Si vous souhaitez jouer un son prolongé, vous devez lancer un process à
part (ou utilisez une zone externe QTContainer avec contrôleur caché).
QTPlaySound
QTPlaySound (CheminAccèsDocument) -> CodeErreur
| Paramètre |
Type |
Description |
| CheminAccèsDocument |
Texte |
Chemin d'accès complet au fichier son |
| CodeErreur |
Entier long |
Code d'erreur (0 = pas d'erreur) |
Description
La commande QTPlaySound vous permet de jouer des fichiers son supportés par QuickTime®, comme des
fichiers MP3. Pendant que le son est joué, le process est suspendu, les autres process continuent de travailler
normalement (le son est joué en mode synchrone), tout comme fonctionne la commande de 4D, JOUER
SON. Pour jouer un son tandis que votre process continue à travailler, lancer un process local
supplémentaire.
 |
Note La commande QTStopSound exécutée d'un autre process stoppe un QTPlaySound immédiatement.
|
Exemple :
| code exemple 4D |
Si (Nombre de parametres=0)
$p:=Nouveau process("Example_PlaySound";32000;"PlaySound";"Play";*)
Sinon
$err:=QTPlaySound ("f:\\xsong.mp3")
Si ($err#0)
ALERTE("Error: "+Chaine($err))
Fin de si
Fin de si |
QTStopPlay
QTStopPlay stoppe un son joué avec la commande QTPlaySound. S'il n'y a pas de son joué, cette
commande ne fait rien. Elle ne nécessite aucun paramètre et ne retourne aucun résultat.
Parce que QTPlaySound suspend le process courant, cette commande ne peut être exécutée qu'à partir d'un
autre process.
Base exemple
__________________________________________________
Copyright © 1985-2008 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager
4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la
licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être
utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette
licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par
photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts
que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques
enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret
Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
__________________________________________________


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.