IBM Books

Image Extender、Audio Extender 和 Video Extender 管理和程序设计

示例 1:按特性检索视频

广告发布代理的帐户管理员需要查看在 1997 年为 IBM 创建的视频广告, 但仅想看持续时间是 30 秒或更短的广告。

下图显示了存取视频的查询。注意查询中名为 FilenameDuration 的 Video Extender UDF。

图 2. 存取视频的查询

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

此查询返回期望的视频的文件名。然后,帐户管理员打开自己喜欢的视频播放程序,并播放每个视频文件的内容。

前一示例说明了帐户管理员可交互地发出的查询。更常见的是,帐户管理员将使用应用程序来查找并播放视频。 下例显示了用 C 编码的这种应用程序的一些关键元素。该应用程序在名为 hvVid_fname 的 DB2 主变量中检索视频文件名。且注意该应用程序使用名为 DBvPlay 的播放 API 来播放视频。

图 3. 存取并播放视频的应用程序

#include <dmbvideo.h>
 
int count = 0;
 
EXEC SQL BEGIN DECLARE SECTION;
char hvClient[30];                      /*client name*/
char hvCampaign[30];                    /*campaign name*/
char hvSdate[8];                        /*ship date*/
char hvVid_fname [251]                  /*video file name*/
   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;


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]