3 Oracle Multimedia ORD_AUDIO PL/SQLパッケージ

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

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

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

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

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

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

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

関連項目:

3.1 ORD_AUDIO PL/SQLパッケージ: BFILEのgetProperties( )

構文

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

説明

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

パラメータ

audioBfile

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

attributes

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

使用上の注意

なし。

プラグマ

なし。

例外

なし。

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

DECLARE
   aud_attrib CLOB;
   aud_data BFILE := BFILENAME('AUDIODIR','testaud.dat');
BEGIN
   DBMS_LOB.CREATETEMPORARY(aud_attrib, FALSE, DBMS_LOB.CALL);

   -- get properties from bfile
   ORDSYS.ORD_AUDIO.getProperties(aud_data, aud_attrib);

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

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

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

構文

getProperties(audioBfile       IN OUT NOCOPY BFILE, 
              mimeType         OUT VARCHAR2, 
              format           OUT VARCHAR2, 
              encoding         OUT VARCHAR2, 
              numberOfChannels OUT INTEGER, 
              samplingRate     OUT INTEGER, 
              sampleSize       OUT INTEGER, 
              compressionType  OUT VARCHAR2, 
              audioDuration    OUT INTEGER);

説明

BFILEに格納されたオーディオ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、オーディオ・データの属性(時間、MIMEタイプ、圧縮タイプ、フォーマット、エンコーディング・タイプ、チャネル数、サンプリング・レートおよびサンプル・サイズ)のプロパティを抽出します。

パラメータ

audioBfile

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

mimeType

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

format

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

encoding

オーディオ・データのエンコーディング・タイプが戻されます。

numberOfChannels

オーディオ・データのチャネル数が戻されます。

samplingRate

オーディオ・データが記録されているサンプルの1秒当たりのサンプリング・レートが戻されます。

sampleSize

データ内のオーディオのサンプル幅またはサンプル数が戻されます。

compressionType

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

audioDuration

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

使用上の注意

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

プラグマ

なし。

例外

なし。

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

DECLARE
   data BFILE:=BFILENAME('AUDIODIR','testaud.dat');
   mimeType VARCHAR2(80);
   format VARCHAR2(32):=NULL;
   encoding VARCHAR2(160);
   numberOfChannels NUMBER;
   samplingRate NUMBER;
   sampleSize NUMBER;
   compressionType VARCHAR2(160);
   audioDuration NUMBER;
BEGIN

   -- get properties from bfile
   ORDSYS.ORD_AUDIO.getProperties(data, mimeType, format, encoding,
        numberOfChannels, samplingRate, sampleSize, compressionType,
        audioDuration);

   -- print properties
   DBMS_OUTPUT.PUT_LINE('mimeType: ' || mimeType );
   DBMS_OUTPUT.PUT_LINE('format: ' || format );
   DBMS_OUTPUT.PUT_LINE('encoding: ' || encoding );
   DBMS_OUTPUT.PUT_LINE('numberOfChannels: ' || numberOfChannels ); 
   DBMS_OUTPUT.PUT_LINE('samplingRate: ' || samplingRate );
   DBMS_OUTPUT.PUT_LINE('sampleSize: ' || sampleSize );
   DBMS_OUTPUT.PUT_LINE('compressionType: ' || compressionType );
   DBMS_OUTPUT.PUT_LINE('audioDuration: ' || audioDuration );

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

3.3 ORD_AUDIO PL/SQLパッケージ: BLOBのgetProperties( )

構文

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

説明

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

パラメータ

audioBlob

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

attributes

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

使用上の注意

なし。

プラグマ

なし。

例外

ORDSourceExceptions.EMPTY_SOURCE

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

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

DECLARE
   aud_attrib CLOB;
   aud_data BLOB;
BEGIN
   SELECT aud, attributes INTO aud_data, aud_attrib 
        FROM taud WHERE N=1 FOR UPDATE;

   -- get properties from blob
   ORDSYS.ORD_AUDIO.getProperties(aud_data,aud_attrib);

   -- print length of extracted proterties
   DBMS_OUTPUT.PUT_LINE('Size of XML Annotations: ' ||
        TO_CHAR(DBMS_LOB.GETLENGTH(aud_attrib)));

   UPDATE taud SET attributes=aud_attrib WHERE N=1;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

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

構文

getProperties(audioBLOB        IN BLOB, 
              mimeType         OUT VARCHAR2, 
              format           OUT VARCHAR2, 
              encoding         OUT VARCHAR2, 
              numberOfChannels OUT INTEGER, 
              samplingRate     OUT INTEGER, 
              sampleSize       OUT INTEGER, 
              compressionType  OUT VARCHAR2, 
              audioDuration    OUT INTEGER);

説明

BLOBに格納されたオーディオ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、オーディオ・データの属性(時間、MIMEタイプ、圧縮タイプ、フォーマット、エンコーディング・タイプ、チャネル数、サンプリング・レートおよびサンプル・サイズ)のプロパティを抽出します。

パラメータ

audioBLOB

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

mimeType

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

format

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

encoding

オーディオ・データのエンコーディング・タイプが戻されます。

numberOfChannels

オーディオ・データのチャネル数が戻されます。

samplingRate

オーディオ・データが記録されているサンプルの1秒当たりのサンプリング・レートが戻されます。

sampleSize

データ内のオーディオのサンプル幅またはサンプル数が戻されます。

compressionType

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

audioDuration

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

使用上の注意

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

プラグマ

なし。

例外

ORDSourceExceptions.EMPTY_SOURCE

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

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

DECLARE
   aud_data BLOB;
   mimeType VARCHAR2(80);
   format VARCHAR2(32):=NULL;
   encoding VARCHAR2(160);
   numberOfChannels NUMBER;
   samplingRate NUMBER;
   sampleSize NUMBER;
   compressionType VARCHAR2(160);
   audioDuration NUMBER;
BEGIN
   SELECT aud, mimetype, format, encoding, numberofchannels, samplingrate,
          samplesize, compressiontype, audioduration 
       INTO aud_data, mimeType, format, encoding, numberOfChannels, 
            samplingRate, sampleSize, compressionType, audioDuration 
       FROM taud WHERE N=1 FOR UPDATE;

   -- get properties from blob
   ORDSYS.ORD_AUDIO.getProperties(aud_data, mimeType, format, encoding,
        numberOfChannels, samplingRate, sampleSize, compressionType, 
        audioDuration);

   -- print properties
   DBMS_OUTPUT.PUT_LINE('mimeType: ' || mimeType );
   DBMS_OUTPUT.PUT_LINE('format: ' || format );
   DBMS_OUTPUT.PUT_LINE('encoding: ' || encoding );
   DBMS_OUTPUT.PUT_LINE('numberOfChannels: ' || numberOfChannels );
   DBMS_OUTPUT.PUT_LINE('samplingRate: ' || samplingRate );
   DBMS_OUTPUT.PUT_LINE('sampleSize: ' || sampleSize );
   DBMS_OUTPUT.PUT_LINE('compressionType: ' || compressionType );
   DBMS_OUTPUT.PUT_LINE('audioDuration: ' || audioDuration );

   UPDATE taud SET 
         aud=aud_data, 
         mimetype=mimeType,
         format=format,
         encoding=encoding,
         numberofchannels=numberOfChannels,
         samplingrate=samplingRate,
         samplesize=sampleSize,
         compressiontype=compressionType,
         audioduration=audioDuration
       WHERE N=1;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/