Armadilloフォーラム

フレーム落ちの確認

kazu_2012

2014年3月28日 16時58分

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

810+810wlanを組み合わせて無線でストリーミングしています。
mjpg_streamerで動作させた場合、フレーム落ちがないかを確認したいのですが。

何か確認方法があれば教えてください。

コメント

at_ohsawa

2014年4月1日 16時37分

> mjpg_streamerで動作させた場合、フレーム落ちがないかを確認したいのですが。
MJPEGにはタイムスタンプ情報が存在しないので、mjpeg_streamerで
送出するフレーム数を1000フレーム等に制限し、クライアント側で
1000フレーム取得できたかを計測すると良いと思います。

任意のフレーム数を送出する方法はmjpeg_streamerのoutput_httpプラグイン
を改造すると実装できそうです。

mjpeg_streamerのoutput_httpプラグインのソースコードを見ると、
atamrk-dist/user/mjpg-streamer/mjpg-streamer.r94/plugins/output_http/httpd.c
内のsend_stream()関数が、httpコネクション毎の子スレッドで、クライアントに対して
送り出すデータを作っているようです。
send_stream()関数内のwhileループ1回あたり1フレームに対応しているようなので、
ここをforループに変えて、任意の回数だけループさせるとフレーム数を制限できます。

クライアント側は、webブラウザだと、フレーム数がわからないので、
ストリームをダンプして、ダンプしたデータ内のimage/jpegコンテンツの
数を数えると良いです。

下記のようにnetcatを使うと、dumpファイルに連続したhttpメッセージが
保存されます。
mjpeg_streamerが十分データを送出した後に、netcatを止めて
dumpファイル内の"Content-Type: image/jpeg"の数をwcでカウントすると
受信したフレーム数がわかります。
送受信で数が一致していればフレームドロップ無しだと判断できるかと思います。

[PC]$ echo "GET /?action=stream HTTP/1.1 \r\n\r\n" | netcat xxx.xxx.xxx.xxx 8080 > dump
(xxx.xxx.xxx.xxxはArmadillo-810のIPアドレス、任意の時間経過後にCtrl-Cで停止)
[PC]$ grep "Content-Type: image/jpeg" dump | wc -l
1000

at_ohsawa

2014年4月1日 16時51分

> [PC]$ grep "Content-Type: image/jpeg" dump | wc -l
ここだけ訂正です。
dumpファイルに文字として解釈できないデータが含まれるので、
grepにバイナリとして扱われて検索できません。
grepに”--text” オプションを付けてください。

kazu_2012

2014年4月2日 14時09分

回答いただきありがとうございます。

提示いただいた方法ですと確かに確認出来そうです。
再度お聞きしたいのですが、送り出すコマ数を指定しての検査方法ですと、通常のランニング時にコマ落ちが生じたか否かを判断するのは難しくはないでしょか?
※特定の期間のみコマ落ちを確認したいのではなく、常時観察できる方法を模索しています。

あるいは、タイムスタンプ付きのストリーミング方法などあるでしょうか?
※無線帯域を考慮するとこの辺りは、妥協が必要でしょうか

御手数ですが宜しくお願い致します。

at_yashi

2014年4月9日 12時06分

> 再度お聞きしたいのですが、送り出すコマ数を指定しての検査方法ですと、
> 通常のランニング時にコマ落ちが生じたか否かを判断するのは難しくはない
> でしょか?

難しいと思います。

> ※特定の期間のみコマ落ちを確認したいのではなく、常時観察できる方法を模索しています。
>
> あるいは、タイムスタンプ付きのストリーミング方法などあるでしょうか?
> ※無線帯域を考慮するとこの辺りは、妥協が必要でしょうか

mjpeg_streamer を使った場合のフレーム落ちは、a) 送信側の a810 がカメラ
から適切なタイミングでフレームを取れなかった場合、b) 受け側のブラウザー
がフレームをなんらかの理由で落した場合だけ発生すると思うのですが、どう
でしょうか?

無線とはいえ、TCP 上の httpで送信するだけなので、通信経路はあまり気にし
なくて良いような気がします。(もし間違っていたら教えてください)

ブラウザー側が、どのタイミングでフレームを落すのかは、お使いのブラウザー
によるので、ちょっと分りません。

どこで発生するフレーム落ちを懸念しているか教えて頂けると、助かります。

kazu_2012

2014年4月16日 13時00分

コメントありがとうございます。
まだこの辺り、未確認の情報が多いため再度問合せをさせていただきます。