6 Oracle Multimedia ORD_VIDEO PL/SQLパッケージ

Oracle Multimediaでは、ORD_VIDEO PL/SQLパッケージが提供されます。このパッケージには、一般的な操作(オペレーティング・システム・ファイルを対象とするビデオ・データのインポートおよびエクスポートや、ビデオ・データからの情報の抽出など)を実行するためのプロシージャが含まれます。

このパッケージにより、BLOBおよびBFILEに格納されているビデオ・データにOracle Multimediaサポートが追加されます。

ORD_VIDEOパッケージは、ordvrpsp.sqlファイルに定義されています。インストール後、このファイルは次のOracleホーム・ディレクトリに格納されています。

<ORACLE_HOME>/ord/im/admin (LinuxおよびUNIXの場合)

<ORACLE_HOME>\ord\im\admin (Windowsの場合)

これらのトピックの例では、TVID表およびVIDEODIRディレクトリが存在すると仮定します。

ORD_VIDEO PL/SQLパッケージのプロシージャの詳細は、次のトピックを参照してください。

関連項目:

6.1 ORD_VIDEO PL/SQLパッケージ: BFILEのgetProperties( )

構文

getProperties(videoBfile IN OUT NOCOPY BFILE, 
              attributes IN OUT NOCOPY CLOB);

説明

BFILEに格納されたビデオ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、入力CLOBに格納します。このプロシージャは、XML形式で一連のフォーマット・プロパティおよびアプリケーション・プロパティをCLOBに移入します。

パラメータ

videoBfile

BFILEで格納されるビデオ・データを指定します。

attributes

getProperties( )プロシージャによって抽出されたXML属性情報を格納するCLOBを指定します。このCLOBには、XML形式でビデオBFILEデータの一連のフォーマット・プロパティおよびアプリケーション・プロパティが移入されます。

使用上の注意

なし。

プラグマ

なし。

例外

なし。

既知のビデオ属性のプロパティ情報を取得します。

DECLARE
   vid_attrib CLOB;
   vid_data BFILE := BFILENAME('VIDEODIR','testvid.dat');
BEGIN
   DBMS_LOB.CREATETEMPORARY(vid_attrib, FALSE, DBMS_LOB.CALL);

   -- get properties from bfile
   ORDSYS.ORD_VIDEO.getProperties(vid_data, vid_attrib);

   -- print length of extracted properties
   DBMS_OUTPUT.PUT_LINE('Size of XML Annotations ' ||
        TO_CHAR(DBMS_LOB.GETLENGTH(vid_attrib)));

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

6.2 ORD_VIDEO PL/SQLパッケージ: BFILEのgetProperties( ) (すべての属性)

構文

getProperties(videoBfile      IN OUT NOCOPY BFILE, 
              mimeType        OUT VARCHAR2, 
              format          OUT VARCHAR2, 
              width           OUT INTEGER, 
              height          OUT INTEGER, 
              frameResolution OUT INTEGER, 
              frameRate       OUT INTEGER, 
              videoDuration   OUT INTEGER, 
              numberOfFrames  OUT INTEGER, 
              compressionType OUT VARCHAR2, 
              numberOfColors  OUT INTEGER, 
              bitRate         OUT INTEGER);

説明

BFILEに格納されたビデオ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、ビデオ・データの属性(MIMEタイプ、フォーマット、フレーム・サイズ、高さ、幅、フレームの解像度、フレーム・レート、ビデオ再生時間、フレーム数、圧縮タイプ、色数およびビット・レート)のプロパティを抽出します。

パラメータ

videoBfile

BFILEで格納されるビデオ・データを指定します。

mimeType

ビデオ・データのMIMEタイプが戻されます。

format

ビデオ・データのフォーマットを指定します。

width

ビデオ・データのフレームの幅がピクセル単位で戻されます。

height

ビデオ・データのフレームの高さがピクセル単位で戻されます。

frameResolution

ビデオ・データのフレームの1インチ当たりのピクセル数が戻されます。

frameRate

ビデオ・データが記録されている1秒当たりのフレーム数が戻されます。

videoDuration

ビデオ・データの再生時間の合計が戻されます。

numberOfFrames

ビデオ・データのフレーム数の合計が戻されます。

compressionType

ビデオ・データの圧縮タイプが戻されます。

numberOfColors

ビデオ・データの色数が戻されます。

bitRate

ビデオ・データのビット・レートが戻されます。

使用上の注意

メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータがNULLに設定されます。

プラグマ

なし。

例外

なし。

既知のビデオ属性のプロパティ情報を取得します。

DECLARE
   vid_data BFILE := BFILENAME('VIDEODIR','testvid.dat');
   mimeType VARCHAR2(80);
   format VARCHAR2(32) := NULL;
   width NUMBER;
   height NUMBER;
   frameResolution NUMBER;
   frameRate NUMBER;
   videoDuration NUMBER;
   numberOfFrames NUMBER;
   compressionType VARCHAR2(160);
   numberOfColors NUMBER;
   bitRate NUMBER;
BEGIN

   -- get properties from bfile
   ORDSYS.ORD_VIDEO.getProperties(vid_data, mimeType, format,
        width, height, frameResolution, frameRate,
        videoDuration, numberOfFrames, compressionType, 
        numberOfColors, bitRate);

   -- print properties
   DBMS_OUTPUT.PUT_LINE('mimeType: ' || mimeType );
   DBMS_OUTPUT.PUT_LINE('format: ' || format );
   DBMS_OUTPUT.PUT_LINE('width: ' || width );
   DBMS_OUTPUT.PUT_LINE('height: ' || height );
   DBMS_OUTPUT.PUT_LINE('frameResolution: ' || frameResolution );
   DBMS_OUTPUT.PUT_LINE('frameRate: ' || frameRate );
   DBMS_OUTPUT.PUT_LINE('videoDuration: ' || videoDuration );
   DBMS_OUTPUT.PUT_LINE('numberOfFrames: ' || numberOfFrames );
   DBMS_OUTPUT.PUT_LINE('compressionType: ' || compressionType );
   DBMS_OUTPUT.PUT_LINE('numberOfColors: ' || numberOfColors );
   DBMS_OUTPUT.PUT_LINE('bitRate: ' || bitRate );

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

6.3 ORD_VIDEO PL/SQLパッケージ: BLOBのgetProperties( )

構文

getProperties(videoBlob  IN BLOB, 
              attributes IN OUT NOCOPY CLOB);

説明

BLOBに格納されたビデオ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、入力CLOBに格納します。このプロシージャは、ビデオ・データの属性(MIMEタイプ、フォーマット、フレーム・サイズ、高さ、幅、フレームの解像度、フレーム・レート、ビデオ再生時間、フレーム数、圧縮タイプ、色数およびビット・レート)の値を抽出します。このプロシージャは、XML形式で一連のフォーマット・プロパティおよびアプリケーション・プロパティをCLOBに移入します。

パラメータ

videoBlob

BLOBで格納されるビデオ・データを指定します。

attributes

getProperties( )プロシージャによって抽出されたXML属性情報を格納するCLOBを指定します。このCLOBには、XML形式でビデオBLOBデータの一連のフォーマット・プロパティおよびアプリケーション・プロパティが移入されます。

使用上の注意

なし。

プラグマ

なし。

例外

ORDSourceExceptions.EMPTY_SOURCE

この例外は、入力videoBLOBパラメータがNULLの場合に発生します。

既知のビデオ属性のプロパティ情報を取得します。

DECLARE
   vid_attrib CLOB;
   vid_data BLOB;
BEGIN
   SELECT vid, attributes INTO vid_data, vid_attrib 
       FROM tvid WHERE N=1 FOR UPDATE;
   
   -- get properties from blob
   ORDSYS.ORD_VIDEO.getProperties(vid_data, vid_attrib);

   -- print length of extracted properties
   DBMS_OUTPUT.PUT_LINE('Size of XML Annotations ' ||
        TO_CHAR(DBMS_LOB.GETLENGTH(vid_attrib)));

   UPDATE tvid SET vid=vid_data, attributes=vid_attrib WHERE N=1;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

6.4 ORD_VIDEO PL/SQLパッケージ: BLOBのgetProperties( ) (すべての属性)

構文

getProperties(videoBLOB       IN BLOB, 
              mimeType        OUT VARCHAR2, 
              format          OUT VARCHAR2, 
              width           OUT INTEGER, 
              height          OUT INTEGER,
              frameResolution OUT INTEGER, 
              frameRate       OUT INTEGER, 
              videoDuration   OUT INTEGER, 
              numberOfFrames  OUT INTEGER, 
              compressionType OUT VARCHAR2, 
              numberOfColors  OUT INTEGER, 
              bitRate         OUT INTEGER);

説明

BLOBに格納されたビデオ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、ビデオ・データの属性(MIMEタイプ、フォーマット、フレーム・サイズ、高さ、幅、フレームの解像度、フレーム・レート、ビデオ再生時間、フレーム数、圧縮タイプ、色数およびビット・レート)のプロパティを抽出します。

パラメータ

videoBLOB

BLOBで格納されるビデオ・データを指定します。

mimeType

ビデオ・データのMIMEタイプが戻されます。

format

ビデオ・データのフォーマットを指定します。

width

ビデオ・データのフレームの幅がピクセル単位で戻されます。

height

ビデオ・データのフレームの高さがピクセル単位で戻されます。

frameResolution

ビデオ・データのフレームの1インチ当たりのピクセル数が戻されます。

frameRate

ビデオ・データが記録されている1秒当たりのフレーム数が戻されます。

videoDuration

ビデオ・データの再生時間の合計が戻されます。

numberOfFrames

ビデオ・データのフレーム数の合計が戻されます。

compressionType

ビデオ・データの圧縮タイプが戻されます。

numberOfColors

ビデオ・データの色数が戻されます。

bitRate

ビデオ・データのビット・レートが戻されます。

使用上の注意

メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータがNULLに設定されます。

プラグマ

なし。

例外

ORDSourceExceptions.EMPTY_SOURCE

この例外は、入力videoBLOBパラメータがNULLの場合に発生します。

既知のビデオ属性のプロパティ情報を取得します。

DECLARE
   vid_data BLOB;
   mimeType VARCHAR2(80);
   format VARCHAR2(32):=NULL;
   width NUMBER;
   height NUMBER;
   frameResolution NUMBER;
   frameRate NUMBER;
   videoDuration NUMBER;
   numberOfFrames NUMBER;
   compressionType VARCHAR2(160);
   numberOfColors NUMBER;
   bitRate NUMBER;
BEGIN
   SELECT vid, mimetype, format, width, height, frameresolution, framerate,
          videoduration, numberofframes, compressiontype, 
          numberofcolors, bitrate 
       INTO vid_data, mimeType, format, width, height, frameResolution,
            frameRate, videoDuration, numberOfFrames, compressionType, 
            numberOfColors, bitRate 
       FROM tvid WHERE N=1 FOR UPDATE;

   -- get properties from blob
   ORDSYS.ORD_VIDEO.getProperties(vid_data, mimeType, format, width, 
       height, frameResolution, frameRate, videoDuration, numberOfFrames,
       compressionType, numberOfColors, bitRate);
   
   -- print properties
   DBMS_OUTPUT.PUT_LINE('mimeType: ' || mimeType );
   DBMS_OUTPUT.PUT_LINE('format: ' || format );
   DBMS_OUTPUT.PUT_LINE('width: ' || width );
   DBMS_OUTPUT.PUT_LINE('height: ' || height );
   DBMS_OUTPUT.PUT_LINE('frameResolution: ' || frameResolution );
   DBMS_OUTPUT.PUT_LINE('frameRate: ' || frameRate );
   DBMS_OUTPUT.PUT_LINE('videoDuration: ' || videoDuration );
   DBMS_OUTPUT.PUT_LINE('numberOfFrames: ' || numberOfFrames );
   DBMS_OUTPUT.PUT_LINE('compressionType: ' || compressionType );
   DBMS_OUTPUT.PUT_LINE('numberOfColors: ' || numberOfColors );
   DBMS_OUTPUT.PUT_LINE('bitRate: ' || bitRate );

   UPDATE tvid SET
         vid=vid_data, 
         mimetype=mimeType, 
         format=format,
         width=width, 
         height=height, 
         frameresolution=frameResolution,
         framerate=frameRate,
         videoduration=videoDuration,
         numberofframes=numberOfFrames, 
         compressiontype=compressionType,
         numberofcolors=numberOfColors,
         bitrate=bitRate
       WHERE N=1;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/