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パッケージのプロシージャの詳細は、次のトピックを参照してください。
関連項目:
-
オペレーティング・システム・ファイルを対象にオーディオ・データをエクスポートおよびインポートする方法の詳細は、「すべてのOracle Multimedia PL/SQLパッケージAPIに共通のプロシージャ」を参照してください。
-
例で使用される表およびディレクトリの詳細は、「Oracle Multimedia 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に移入します。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
なし。
例
既知のオーディオ属性のプロパティ情報を取得します。
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に移入します。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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;
/