Extensions Image, Audio et Vidéo Administration et programmation

Exemple 1 : Recherche d'une séquence vidéo en fonction de ses caractéristiques

L'un des concepteurs de l'agence souhaite visionner les films publicitaires réalisés pour le compte d'IBM en 1997, mais limiter sa recherche aux films d'une durée inférieure ou égale à 30 secondes.

La La figure ci-après illustre une requête permettant d'accéder aux séquences vidéo. Cette requête fait appel aux fonctions UDF Filename et Duration de l'extension Vidéo.

Figure 2. Requête accédant à des séquences vidéos.

SELECT FILENAME(ADS_VIDEO)
       FROM ADS
WHERE CLIENT='IBM' AND
SHIP_DATE>='01/01/1997' AND
DURATION(ADS_VIDEO) <=30

La requête renvoie le nom des fichiers répondant aux critères indiqués. Il ne reste plus au publicitaire qu'à visionner le contenu de chaque film à l'aide du lecteur de son choix.

La L'exemple ci-dessus illustre une requête susceptible d'être émise de façon interactive par le gestionnaire du compte. Toutefois, l'utilisateur fera plus généralement appel à un programme d'application pour la recherche et la lecture des séquences vidéos. L'exemple suivant illustre certains éléments essentiels d'une telle application codée en C. Cette application permet d'extraire le nom des fichiers à l'aide d'une variable DB2 appelée hvVid_fname. Elle fait également appel à une API graphique, appelée DBvPlay, pour la lecture des séquences vidéo.

Figure 3. Application accédant à des séquences vidéo et permettant leur lecture

#include <dmbvideo.h>
 
int count = 0;
 
 
EXEC SQL BEGIN DECLARE SECTION;
char hvClient[30];                      /*nom du client*/
char hvCampaign[30];                    /*nom de la campagne*/
char hvSdate[8];                        /*date de livraison*/
char hvVid_fname [251]                  /*nom du fichier vidéo*/
  EXEC SQL END DECLARE SECTION;
 
 
EXEC SQL DECLARE c1 CURSOR FOR
     SELECT CLIENT, CAMPAIGN, SHIP_DATE, FILENAME(ADS_VIDEO)
       FROM ADS
       WHERE CLIENT='IBM' AND
         SHIP_DATE>='01/01/1997' AND
         DURATION(ADS_VIDEO)<=30
FOR FETCH ONLY;
 
EXEC SQL OPEN c1;
for (;;){
        EXEC SQL FETCH c1 INTO :hvClient, :hvCampaign,
                         :hvSdate, :hvVid_fname;
 
         if (SQLCODE != 0)
              break;
 
    printf("\nRecord %d:\n", ++count);
    printf("Client = '%s'\n", hvClient);
    printf("Campaign = '%s'\n", hvCampaign);
    printf("Sdate = '%s'\n", hvSdate);
 
    rc=DBvPlay(NULL,MMDB_PLAY_FILE,hvVid_fname,MMDB_PLAY_WAIT);
}
EXEC SQL CLOSE c1;


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]