Armadilloフォーラム

Gstreamer1280x720キャプチャ時フレームレートについて

hamaoka

2015年7月14日 15時46分

初めて質問させていただきます。
浜岡と申します。

現在、インタフェースCEU0から、16bit 1280x720のカメラで30fpsキャプチャを行おうとしています。
以下のパイプラインでキャプチャを行っているのですが、mp4ファイルのフレームレートを確認すると22fpsまでしか出ていません。
(ビデオソースをv4l2srcからvideotestsrcに変更すると30fpsになります。
また、Armadillo810用カメラを用いた場合は30fpsになるようです。)

○v4l2srcによる録画
gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-raw,format=YVYU,width=1280,height=720,framerate=30/1 ! videoconvert ! acmh264enc ! queue ! qtmux ! filesink location=Camera_gstreamer108.mp4

○testvideosrcによる録画
gst-launch-1.0 -e videotestsrc ! video/x-raw,format=YVYU,width=1280,height=720,framerate=30/1 ! videoconvert ! acmh264enc ! queue ! qtmux ! filesink location=test_gstreamer108.mp4

また、標準でインストールされているGstreamer1.0.8からGstreamer1.2.3に切り替えることで、v4l2による録画の方はさらにフレームレートが落ちてしまい、6fps程度になってしまいます。

そこで、以下の質問をさせていただきます。

1.現在22fpsでしかキャプチャできていませんが、1280x720のカメラで30fpsでキャプチャはできるのでしょうか
 また、フレームレートを改善するにはパイプラインのどの部分を調査/改善すればよいのでしょうか

2.Gstreamerのバージョンを上げることで、フレームレートが落ちるということは通常考えられるのでしょうか

以上、宜しくお願い致します。

コメント

at_shota.tamura

2015年7月17日 20時31分

浜岡様

田村です。

> ○v4l2srcによる録画
> gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-raw,format=YVYU,width=1280,height=720,framerate=30/1 ! videoconvert ! acmh264enc ! queue ! qtmux ! filesink location=Camera_gstreamer108.mp4

こちらのパイプラインですが、 videoconvert (YVYU -> NV12)に
約30ミリ秒かかっているようです。

そのため、videoconvert を除いた以下のパイプラインを試してみてください

gst-launch-1.0 -e v4l2src device=/dev/video0 \
! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \
! acmh264enc ! queue ! qtmux ! filesink location=Camera_gstreamer108.mp4

> 1.現在22fpsでしかキャプチャできていませんが、1280x720のカメラで30fpsでキャプチャはできるのでしょうか

可能です。

こちらでは、FullHD 対応カメラモジュール (KBCR-S02TXG) を使い、
1280x720 30fps でキャプチャすることが出来ました。

>  また、フレームレートを改善するにはパイプラインのどの部分を調査/改善すればよいのでしょうか

こちらのスレッド[1] に添付しているアプリケーション (enctime.c) に手を加えて、
どこに時間がかかっているのかを測定するのが良いかと思います。
※ videoconvert の処理に時間がかかっていることも、このアプリで調べました。

補足になりますが、acmh264enc の入力は NV12 のみであるため、
CEU からのキャプチャは NV12 を指定することが望ましいです。

また、CEU は Image format convesion 機能を持っているので、
お使いのカメラモジュールが NV12 フォーマットで出力できなくとも、
フォーマットによっては、CEU で NV12 へ変換することができます。
※ 詳しくは R-Mobile A1 のデータシートを参照してください。

[1]: https://users.atmark-techno.com/comment/1916#comment-1916