Conteneur QuickTime® : plugin pour contrôler des films et des sons QuickTime®

Thomas Maul

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. ♪

- Titre : Conteneur QuickTime® : plugin pour contrôler des films et des sons QuickTime®

- Auteur : Thomas Maul

- Parution : 1 novembre 2005

- Licence : Ce document est issu de https://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.

Sommaire

- Liste des fonctionnalités

- Vue d'ensemble

- Vidéo

- 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

Vidéo

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érifier que cette 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. Écriture 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 utilisent 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 média ne supporte pas les actions du contrôleur (Image).

D'autres nombres en négatif :
voir la documentation de Apple QuickTime®
http://developer.apple.com/documentation/QuickTime/APIREF/errorcodes.htm

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ée 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.

Résultat de la fonction
La fonction retourne 0 si le son a été joué correctement.
Les nombres négatifs entre 0 et -99 sont des messages d'erreurs Apple :
https://4d.developpez.com/documentation/4DDoc2004/CMF/CMF02028.HTM

Pour les nombres négatifs entre -2000 et au-dessus, voir les codes d'erreur QuickTime® :
http://developer.apple.com/documentation/QuickTime/APIREF/errorcodes.htm

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

Télécharger la base exemple.