2012-05-01 29 views
2

Linuxにffmpegとffmpeg-develパッケージをインストールしました。Oracleからffmpeg apiを呼び出す

Oracle 11gがインストールされ、実行中です。

データベースにはメディアファイルが保存されています。ストリーミングを改善するには、それらをAVI形式に変換する必要があります。

統合を容易にするため、データベースでこの変換を行いたいと考えています。

最も単純なオプションは、ffmpegコマンドラインユーティリティのラッパーを作成し、PLSQLプロシージャでこれを呼び出すことができるようにすることです。

しかし、これは、次の手順が必要となる:OSのファイルに

  1. 読むビデオBLOB
  2. 書き込み(2)からファイル名を与える
  3. コールffmpegのラッパーと出力ファイル名
  4. ロードPLSQLの3からBLOBへの出力ファイル

可能であれば、Cルーチン(Oracle Externa l Libraryフィーチャー)を使用して、入力をBLOB(OciLOBLocator)として受け入れ、LOBを表す適切なlibavformat関数を呼び出して、PLSQLレイヤーがAVIファイルとして使用するものであるLOB(やはりOciLOBLOcator)に戻ります。

これは、Oracle内からOSコマンドを発行することの望ましくない影響を回避することです。

問題は、ファイルからのデータの処理をffmpegの例で示していますが、LOBを処理するライブラリが必要です。

代わりに、OracleのOrdVideoデータ型が、このような変換をsetformatおよびprocessを使用して実行するかどうかを確認することです。

答えて

0

興味深い課題。したがって、 'ffmpeg'コマンドラインユーティリティを呼び出す必要はなく、データベース内のネイティブ呼び出しでlibavformatとlibavcodecライブラリを活用する方が好きです。私はその権利を持っていますか?

私は、これらのLOB/OciLOBLocatorのものがC APIを読み書きすることを信頼していますか?その場合、おそらくそのAPIに基づいて新しいURLProtocolを作成することができます。 URLProtocolsは、FFmpegがI/Oを処理する方法です。 'ffmpeg -protocols'を実行すると、実装されているすべてのものが表示されます。 open、read、write、seek、closeなどのURLProtocolの簡単な例については、libavformat/file.cのソースを調べてください。

+0

マイク、応答に感謝します。はい、あなたは正しいです、私がやりたいことです。 DB内からOSコマンドを起動すると、人が緊張し、DBA警察に合格するのは非常に難しくなります。 このURLプロトコルオプションを見て、ここで私の知見をフィードバックします。 – TenG

+0

まだこの質問に対して役に立たない返答はありません。 – TenG

+0

あなたは依然として結果をフィードバックしていません。これはあなたが新しい地面を壊しているものの1つかもしれません。私の答えに記載されているLOBs/OciLOBLocatorオプションを試しましたか?私はそれを試したかもしれませんが、まあ...私は本当にOracleのインストールが周りに横たわっていない。 –

関連する問題