1

Opencv フレーム (opencv camera Api 経由で作成) を受け入れ、それらのフレームを H264 フレームにエンコードした後、それらのフレームをネットワークに送信しようとするアプリに取り組んでいます。

このプロジェクトでは、ハードウェア経由でエンコードを実行するように依頼されました。

以下のパイプラインを使用して、送信機のビットをエンコードしました。

gst-launch-1.0 appsrc name=applicationSource ! videoconvert ! video/x-raw,width=640,format=I420,height=480,framerate=15/1 ! vaapiencode_h264 ! vaapiparse_h264 config-interval=1 ! rtph264pay config-interval=1 ! gdppay ! tcpserversink host=127.0.0.1 port=5002 sync=false

私のAppsrcのキャップは次のとおりです。

video/x-raw","format""RGB","width"640,"height",G_TYPE_INT,480,
                                               "framerate", 15, 1,
                                               "pixel-aspect-ratio" 1, 1,

ただし、このパイプラインを実行しようとすると、次のエラーが表示されます。

libva 情報: VA-API バージョン 0.37.0

libva 情報: va_getDriverName() は 0 を返します

libva 情報: /usr/lib64/dri/i965_drv_video.so を開こうとしています

libva 情報: 初期化関数 __vaDriverInit_0_37 が見つかりました

libva 情報: va_openDriver() は 0 を返します

0:00:04.597696251 23508 0x7f724003f940 警告 GST_PADS gstpad.c:3739:gst_pad_peer_query: スティッキー イベントを送信できませんでした

0:00:05.030818739 23508 0x7f724003f940 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop: エラー: 内部データ フロー エラー。

0:00:05.030864404 23508 0x7f724003f940 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop:エラー: ストリーミング タスクが一時停止しました。理由はネゴシエートされていません (-4)

エラー : 内部データ フロー エラー。

0:00:05.032763231 23508 0x7f724003f940 WARN baseparse gstbaseparse.c:1155:gst_base_parse_sink_event_default: エラー: ストリームの終了前に有効なフレームが見つかりません

エラー : ストリームの終了前に有効なフレームが見つかりません

強調したように、パイプラインはネゴシエーションの問題により開始されません

Appsrc をテストしましたが、動作しているようです (データを受信して​​います)。

これを克服するために他のプラグインを提案できる人はいますか??

PS: カメラ v4l2src プラグインでこのパイプラインを試してみましたが、パイプラインは良好な状態で動作しているようです!

どんな助けでもいいです!

ありがとう !

4

1 に答える 1

1

上記の問題を修正しましたが、gstreamer パイプラインに caps 属性がないことが原因でした...

appsrc プラグインのキャップを次のように追加しました。

video/x-raw","format""RGB","width"640,"height",G_TYPE_INT,480,
                                               "framerate", 15, 1,
                                               "pixel-aspect-ratio" 1, 1,

しかし、私は欠けていました

"interlace-mode",G_TYPE_STRING,"progressive",

v4l2src caps を確認して確認しました: デバッグを有効にしてこれを行いました

--gst-debug=v4l2src:6

このようなパイプラインで実行してください:

gst-launch-1.0 --gst-debug=v4l2src:6 v4l2src ! videoconvert ! video/x-raw,width=640,format=I420,height=480,framerate=15/1 ! vaapiencode_h264 ! vaapiparse_h264 config-interval=1 ! rtph264pay config-interval=1 ! gdppay ! tcpserversink host=127.0.0.1 port=5002 sync=false
于 2015-11-26T21:04:26.617 に答える