Armadilloフォーラム

Armadillo-810での30fps→60fps変換

sirakawa

2020年4月22日 9時35分

お世話になります。白川と申します。

Armadillo-810に接続したカメラの映像をGStreamerを使用してUDPストリーム出力することを試行中ですが、難航しております。
入力/出力仕様は以下となります。
 カメラからの入力 :1280x960、30fps、NV12
 UDPストリーム出力:1280x720、60fps、H264、MPEG-2 TS

60fpsに変換せず、30fpsのままの出力[1]は問題なく実行できたのですが、
60fpsでの出力[2]では35fps程度となってしまいました。
30fpsから60fpsにレートを上げる方法についてご助言いただけませんでしょうか。

現在は、Armadillo-840のマニュアルに記載がある[3]、メモリコピーによる遅延であると考えて
ceu2rtpを改造して使用することを検討しています。
ただ、このソフトウェアには30fpsから60fpsに変換するような(GStreamerのvideorate相当)機構が無いと考えております。
ceu2rtpにvideorateの処理を移植することを考えたのですが、
videorateの処理のボリュームが少なくないことと影響範囲が見きれないことから、難航しております。

少しでも情報をいただければ、幸いです。

[1]:gst-launch-1.0 -e v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=1280,height=960 ! acmh264enc y-offset=120 ! video/x-h264,width=1280,height=720 ! h264parse config-interval=1 ! mpegtsmux alignment=7 ! rndbuffersize min=1316 max=1316 ! udpsink force_ipv4=true host=192.168.10.100 port=12345
[2]:gst-launch-1.0 -e v4l2src device=/dev/video1 ! video/x-raw,framerate=30/1,width=1280,height=960 ! videorate ! video/x-raw,framerate=60/1 ! acmh264enc y-offset=120 ! video/x-h264,width=1280,height=720 ! h264parse config-interval=1 ! mpegtsmux alignment=7 ! rndbuffersize min=1316 max=1316 ! udpsink force_ipv4=true host=192.168.10.100 port=12345
[3]:https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_ma…

コメント

佐藤です。

下記の投稿に添付されている、enctime.cを使ってどこがボトルネックになっているのか計測してみるのが良いかと思います。
https://armadillo.atmark-techno.com/comment/1916#comment-1916

また、1280x960 30fpsを60fpsにしてからのacmh264encは下記の最大フレームレート仕様から外れているようにみえます。
https://manual.atmark-techno.com/armadillo-810/armadillo-810_product_ma…