Armadilloフォーラム

Gstreamerがフリーズしてしまう事がある

yuki.shigefuji

2024年1月9日 14時24分

お世話になっております。
表題の件で、過去に https://armadillo.atmark-techno.com/forum/armadillo/14749 で頂いたコードを使用しGstreamerを使用しているのですが、

vpuenc_h264

のパイプラインてGstreamerを使用すると、たまにフリーズが発生し、
再起動するまで同じパイプラインを使用したGstreamerが動作しなくなります。(Pythonのプロセスを削除し再起動しても動作しない)

その状態の時bashで以下のコマンドを実行したときも、フリーズし、からの動画ファイルができます。(応答が返ってきません)
gst-launch-1.0 videotestsrc num-buffers=300 ! videoconvert ! video/x-raw,width=1280,height=720,framerate=30/1 ! queue ! vpuenc_h264 ! h264parse ! qtmux ! filesink location=output.mp4 sync=false

なおその状態でも以下のコマンドは実行でき、動画ファイルが正しく出力されます。
gst-launch-1.0 videotestsrc num-buffers=300 ! videoconvert ! x264enc ! mp4mux ! filesink location=output.mp4 sync=false

何か対処できる方法はございますでしょうか?

コメント

at_makoto.sato

2024年1月9日 17時54分

佐藤です。

現象を発生させるための最小限のコードを提供していただくことは可能でしょうか。

yuki.shigefuji

2024年1月9日 19時08分

お世話になっております。

事象としては以下の通りです。
・不具合までの発生に最短6時間~最長24日ほどかかる

また、以下のようなことを調査しておりますので共有します。
------------------------------------------------------------------------------------------------
・linuxのシェルコマンドで実行しても同様に返答がない(空ファイルのみ出力された状態で停止する)
gst-launch-1.0 videotestsrc num-buffers=300 ! videoconvert ! video/x-raw,width=1280,height=720,framerate=30/1 ! queue ! vpuenc_h264 ! h264parse ! qtmux ! filesink location=output.mp4 sync=false

・以下のコマンドを実行すると正常に出力される
gst-launch-1.0 videotestsrc num-buffers=300 ! videoconvert ! avimux ! filesink location=output.avi

このことから「vpuenc_h264 」を使用したエンコードに問題があるのではないと考えています。

> 佐藤です。
>
> 現象を発生させるための最小限のコードを提供していただくことは可能でしょうか。

ファイル ファイルの説明
capture_test.txt

at_makoto.sato

2024年1月10日 17時36分

佐藤です。

テストコードの提供ありがとうございます。
こちらでも動作させてみて確認します。

yuki.shigefuji

2024年1月16日 13時59分

お世話になっております。
テストコードの提供から一週間が経過いたしましたがその後どのような状況になっていますでしょうか。
可能であれば調査状況の共有をよろしくお願いいたします。

> 佐藤です。
>
> テストコードの提供ありがとうございます。
> こちらでも動作させてみて確認します。

at_makoto.sato

2024年1月16日 14時15分

佐藤です。

> テストコードの提供から一週間が経過いたしましたがその後どのような状況になっていますでしょうか。
> 可能であれば調査状況の共有をよろしくお願いいたします。
テストコードをいただいてからこちらでも約一週間連続動作させていますが、まだ発生していない状況です。
もし可能でしたら、そちらでもプログラムを実行する前に以下のように GST_DEBUG=3 をつけて実行していただけますでしょうか。

[container]# GST_DEBUG=3 python3 capture_test.py

これでもし現象が発生した場合はその時のログをいただければと思います。

yuki.shigefuji

2024年1月17日 16時05分

お世話になっております。

デバッグレベル4で動作させフリーズした物と正常に動作している物を共有致します。
しかしフリーズする物としない物を比較した所変化が無いため原因の特定にはこちらでは至っておりません。
以上、ご確認よろしくお願いいたします。

> 佐藤です。
>
> > テストコードの提供から一週間が経過いたしましたがその後どのような状況になっていますでしょうか。
> > 可能であれば調査状況の共有をよろしくお願いいたします。
> テストコードをいただいてからこちらでも約一週間連続動作させていますが、まだ発生していない状況です。
> もし可能でしたら、そちらでもプログラムを実行する前に以下のように GST_DEBUG=3 をつけて実行していただけますでしょうか。
>

> [container]# GST_DEBUG=3 python3 capture_test.py
> 

> これでもし現象が発生した場合はその時のログをいただければと思います。

ファイル ファイルの説明
gst_debug_174.log 機器停止が起きず正常に動作しているログ
gst_debug_220.log 機器停止が起きたログ

at_makoto.sato

2024年1月17日 17時52分

佐藤です。

ログありがとうございます。
現象が発生している状態だと、 以下のコマンドを実行してもフリーズするとのことですが、この時のログはどうなってますでしょうか。

GST_DEBUG=3 gst-launch-1.0 videotestsrc num-buffers=300 ! videoconvert ! video/x-raw,width=1280,height=720,framerate=30/1 ! queue ! vpuenc_h264 ! h264parse ! qtmux ! filesink location=output.mp4 sync=false

(こちらの連続稼働ではまだ発生しておりません)

at_makoto.sato

2024年2月8日 9時28分

佐藤です。

提供いただいた capture_test.txt を連続稼働させてから1ヶ月ほど経ちましたが、こちらではまだ発生しておりません。
引き続き動かしてみます。
(capture_test.txtですが、出力ファイル名をoutput.txtに固定して上書きするように改変しています。また、USBカメラはLogigool製 C920を使用しています。)