ビデオファイルをデコードするための簡単なアプリを作成するために、gstreamer-1.4.0 をインストールしました。私が作成しようとしているパイプラインは単純に見えます:
filesrc location="file.h264" ! decodebin ! filesink location="file.raw"
このパイプラインは、gst-launch-1.0 を使用して起動すると正常に動作しますが、C で記述されたプログラムを実行しようとすると、「decodebin」というファクトリが見つかりません。
GstElementFactory *factory;
factory = gst_element_factory_find("decodebin");
if( !factory )
// fail
上記のコードは常に失敗します (factory は NULL)。gst-inspect-1.0 は「decodebin」を正しく認識するので、GST_PLUGIN_PATH などに何か問題があるのではないかと推測していますが、どのように適切に設定すればよいかわかりません。しかし、私のアプリがコア要素と呼ばれるプラグインにあるfilesrcやfilesinkなどのファクトリから他の要素を作成し、プラグインの「再生」からのdecodebinが失敗するという事実に基づいた私の推測です。
私の質問:コア要素だけでなく、すべてのプラグインを認識するために gstreamer 構成を修正するにはどうすればよいですか?
重要な情報をスキップした場合は、できるだけ早く追加できるようにお知らせください:)
// 編集: ソースから gstreamer をインストールしたとしましょう (ubuntu 14.04 を使用しています)。ソースからもすべてのプラグイン(ベース、バッグ、グッド)をインストールしました。インストール ディレクトリは /opt/gstreamer-1.4.0/ でした。これが問題を引き起こす可能性があります。
コマンドを実行すると:
echo $GST_PLUGINS_PATH
他の GST_* 環境変数の値を表示しようとすると、空の行が表示されるだけです。
より具体的な質問:非コア要素プラグインを機能させるには、どのディレクトリをどの変数に追加する必要がありますか?
この質問が一般的すぎる場合は、次のようにします。
gst_element_factory_find("factory_name") は、指定されたファクトリが存在するかどうかをどのようにチェックしますか?