2

Linuxにffmpegとffmpeg-develパッケージをインストールしました。

Oracle11gがインストールされて実行されています。

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

統合を容易にするために、この変換をデータベースで実行します。

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

ただし、これには次の手順が必要です。

  1. ビデオBLOBを読む
  2. OSファイルに書き込む
  3. (2)のファイル名と出力ファイル名を指定してffmpegラッパーを呼び出します
  4. 出力ファイルを3からPLSQLのBLOBにロードします

可能であれば、入力をBLOB(OciLOBLocator)として受け入れ、LOBを提示する適切なlibavformat関数を呼び出し、リターンをLOB(ここでもOciLOBLOcator)に書き込むCルーチンを(Oracle外部ライブラリ機能を使用して)記述したいと思います。これは、PLSQLレイヤーがAVIファイルとして使用するものです。

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

私が抱えている問題は、ffmpegの例ではファイルからのデータの処理が示されているのに対し、LOBを処理するにはライブラリが必要なことです。

別の方法は、OracleのOrdVideoデータ型がsetformatとprocessを使用してこの種の変換を行うかどうかを確認することです。

4

1 に答える 1

0

面白い挑戦。そのため、「ffmpeg」コマンド ライン ユーティリティを呼び出す必要はなく、データベース内のネイティブ呼び出しで libavformat および libavcodec ライブラリを活用したいようです。私はその権利を持っていますか?

これらの LOBs/OciLOBLocator が読み書き用の C API を公開していると信じていますか? その場合は、おそらくその API に基づいて新しい URLProtocol を作成できます。URLProtocols は、FFmpeg が I/O を処理する方法です。「ffmpeg -protocols」を実行して、実装されているすべてのものを確認します。libavformat/file.c のソースを調べて、URLProtocol に伴う単純な例 (オープン、読み取り、書き込み、シーク、クローズ、およびその他のいくつかの機能) を確認してください。

于 2012-05-01T17:09:20.207 に答える