mnakada / atomcam_tools

Hack tool for atomcam and wyzecam.
Other
183 stars 22 forks source link

RTSPにて音が出ていない…? #40

Closed accept closed 2 years ago

accept commented 2 years ago

本日気が付いたのですが、音声オプションを有効にしていてもRTSP Mainに音声が乗らないようです。 SynologyのNASにある録画サーバーと、WindowsからVLCにて確認しました。 Subのほうでは音声出力されているようです。 うちで運用している8台のAtomcam全てで同じ状態なので、個体差ではないと思うのですが… 何か状態を確認する方法はありますか…?

accept commented 2 years ago

一応、RTSP Serverのlogであろうものをtmpディレクトリより見つけましたので、内容を貼っておきます。 rtspserver.log

log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500

[NOTICE] main.cpp:310
    Version: 1 live555 version:2016.01.29
[ERROR] main.cpp:317
    Failed to create RTSP server: bind() error (port number: 8554): Address already in uselog level:500

[NOTICE] main.cpp:310
    Version: 1 live555 version:2016.01.29
[ERROR] main.cpp:317
    Failed to create RTSP server: bind() error (port number: 8554): Address already in uselog level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device

このログに異常があるのか、これが正常なのかはわかりませんが、何かの参考になりましたら幸いです。

accept commented 2 years ago

ご報告です。 なんとなく原因がわかりました。 私の環境はRTSPのMain、音声、RTSP over HTTPを有効にして運用しているのですが、その状態でSubを音声込みで有効にし Sub側の音声オプションをオフにすると、Main側の音声もオフになるようです。 Sub側をテストした後、丁寧にSubの音声をオフにしていたようで、全台でMainの音声が出ない、ということのようでした。

一度Sub側も含めてすべて有効にし、Subの音声オプションを切らずにSubストリームだけをオフにしたら、無事Main側で音声が拾えました。

mnakada commented 2 years ago

ありがとうございます。 何かscriptの処理で悪さしてるのかもしれません。 あとで見ておきます。

accept commented 2 years ago

@mnakada ありがとうございます。お手数おかけいたします… あまり役に立たない、関係ないことかもしれませんが音声が出ない問題が出ていた時、たまにですがNASでは音以外映像が正常に映るがVLCでは再生出来ない、再生できても色がおかしい、映像の上端が虹色に滲んでいるなどの現象も出ておりました。 VLCでのエラーメッセージは下記となります。

コーデックがサポートされていません。:
VLCは形式 "h264" (H264 - MPEG-4 AVC (part 10)) をデコードできませんでした。

今うちで確認できている一台でNASでは見れているがVLCでは上記メッセージで見れない現象が出ていますので、もしストリームの情報などこちらで確認できることがありましたらお声掛けいただけますと幸いです。

accept commented 2 years ago

立て続けに失礼いたします。 Gstreamerにてクライアントサーバー間のやり取りが見れそうだったので、VLCでは再生できないAtomcamと再生できるAtomcamを比較してみました。 その結果、VLCで見れないAtomcamはsprop-parameter-setsに異様に長いパラメーターが渡されていました。 症状が出ているのがたまたま二台ありましたので比較しましたが、一台目は340~349文字ほどのbase64にエンコードされているような文字、二台目は途中からAの連続になるような文字でした。 VLCで見れるものは61文字ほどのパラメーターが渡されていました。 取り急ぎ報告させていただきます。

mnakada commented 2 years ago

audioの問題はVer.1.4.3で修正しました。 VLCでエラーになってる問題はわからないですが、audio streamにゴミデータが載っていてストリームの境界を誤判断した可能性があります。 Ver.1.4.3で再度確認してもらえますか。

kazuna02 commented 2 years ago

音声が出力されないという本事象は、検証の結果Ver3.1.10より発生していることが判明。 Ver3.1.9では正常に音声が出力されていることを確認致しました。 VLCのメディア情報によると PCM S16 BE (s16b) オーディオ モノラル 8kHz 16bit と なっており音声ストリームは存在するもののデコードできる形式ではないのかも知れません。 あ、書いてる間にVer1.4.3の告知が投稿されました。(リアルタイムで反映されるのですね)

kazuna02 commented 2 years ago

Ver1.4.3にて動作検証を行いました。結果は残念ながら音声出力はされませんでした。 Ver3.19では音声も出力されていますので、急がずボチボチ修正して頂ければ結構かと。

mnakada commented 2 years ago

@kazuna02 , 何か微妙に現象が違うように見えるので別な問題である気がします。 可能であればloginして /scripts/atom_init.shの最後から2行目の

LD_PRELOAD=/tmp/system/lib/modules/libcallback.so /system/bin/iCamera_app >> /var/run/atomapp &

を、最後のところにstderrの出力をファイルに出すように 2> /tmp/log/atomerr.log を追加して

LD_PRELOAD=/tmp/system/lib/modules/libcallback.so /system/bin/iCamera_app >> /var/run/atomapp 2> /tmp/log/atomerr.log &

に修正して、再起動後にaudioが出てない状態を再現後、/tmp/log/atomerr.logを送ってもらえないでしょうか?

accept commented 2 years ago

@mnakada 全台1.4.3にアップデートさせていただき、音声がSubに影響されずMain側に正常に乗ることを確認しました。 いつもながら迅速なご対応に頭が下がる思いです…

ただまだ不安定な部分があるのかアップデート後にRTSP自体が止まっていたり音声が乗らなかったりということがありました。 本体の再起動や、RTSP over HTTPをオンオフ繰り返していたところ正常になりましたが原因は不明です。 一度正常に動作してしまえば下手にRTSP関連のオプションを触らない限り問題はなさそうなので、とりあえずこちらで様子をみてみます。

VLCで見れない個体も再起動のせいかアップデートのおかげかはわかりませんが、今のところ症状は出ていないようです。 もしまた再現しましたらご報告させていただきます。 私の方ではひとまず解決しましたが、 @kazuna02 様が解決していないようなのでIssueはこのまま残しておきます。 ありがとうございました😌

kazuna02 commented 2 years ago

@mnakada こちらもリブート等を行ったところ音声が乗る様になりました。 しかし、@accept氏も書かれている通りRTSP自体に接続できなかったり、 音声が乗らなかったりと正常動作に戻ったトリガーが掴めません。 追ってログも取ってみますが、現状ですと動作が不安定な様に感じます。 コレとコレの組み合わせや手順など何等かの再現性が見つかれば良いですが…。

accept commented 2 years ago

ご報告です。 Atomcamの今は使っていないNAS転送機能設定を削除したく思い、SDカード内のconfigファイルをSSH経由で削除 その後Atomcamを再起動したところRTSPが起動しませんでした。 configファイルの削除が原因かは定かではありません。

RTSP over HTTPをオンオフしてもダメで、再起動しても繋がらず、最終的に音声やRTSP over HTTPをオンにしたままMainのオプションをオフにした状態で再起動し、再起動後しばらく経ってからMainをオンにしたところRTSPが作動しました。 こういう場合どこかにlogは記録されていますか…?

mnakada commented 2 years ago

@accept , /tmp/log/以下にいくつかファイルが生成されます。 /tmpはRAM-diskなので再起動すると消えてしまいます。 これ以外には、/media/mmc/atomhack.logに定期的にメモリの状態と再起動の情報 /media/mmc/healthcheck.logにネットワークの異常時の情報が記録されます。

iCamera_appやlibcallbackのエラー系の出力は膨大になる場合があって、/tmpの容量を溢れさせる事があるため捨てています。このlogは上に書いた/scripts/atom_init.shの修正をいれて再起動すると取る事ができます。

以上が発生してから再起動してなければ、/tmp/log/rtspserver.log、現象を再現できるなら、atomerr.logを出すようにして現象を再現させると何かわかるかもしれません。 あと、WiFiのデバイスがatbmだとエラーがよく出てるようでネットワークが途切れる現象が起きています。 dmesgコマンドの出力を見るとatbm_logでエラーが出ています。

accept commented 2 years ago

@mnakada ご指南ありがとうございます。 1.4.3にアップデートしてある個体で、レンズが曇ってしまい稼働させていないAtomcam1にて色々とテストをしてみました。 その結果、RTSPのMain、音声、RTSP over HTTPがオンであり、Atomcamを起動ないし再起動した状態でRTSP over HTTPをオフにした後、数秒後にオンにしてを2回繰り返すとRTSPが立ち上がっていない状態を再現できました。 なおこの状態はVLCだとエラーメッセージが

入力を開くことができません:
VLCはMRL 'rtsp://*.*.*.*:8080/video0_unicast'を開けません。詳細はログを確認してください。

でした。 そもそも、こんな短時間でのオンオフを想定していないでしょうから、それが普通の動作なのかもしれませんがスクリプト修正でatomerr.logも取得できましたので貼らせていただきます。 なおrtspserver.logも一応貼りますが、以前貼らせていただいたものと内容はほぼ同じでした。 atomerr.log

---- FPGA board is ready ----
  Board UID : 30AB6E51
  Board HW ID : 72000460
  Board rev.  : 5DE5A975
  Board date  : 20190326
-----------------------------
local_sdk_video_set_encode_frame_callback streamChId=0, callback=0x4055b0
enc func injection save video_encode_cb=0x4055b0
!! The specified ScalingList is not allowed; it will be adjusted!!
local_sdk_video_set_encode_frame_callback streamChId=1, callback=0x405590
enc func injection save video_encode_cb=0x405590
local_sdk_video_set_encode_frame_callback streamChId=3, callback=0x405570
Opening V4L2 device: /dev/video0 23
Opening V4L2 device: /dev/video1 24
local_sdk_audio_set_pcm_frame_callback streamChId=0, callback=0x421960
enc func injection save audio_pcm_cb=0x421960
netbios_session_new, open_socket: : Connection timed out

rtspserver.log

log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device

お役に立ちましたら幸いです。

accept commented 2 years ago

立て続けにすみません… さらに確認したところ、RTSP over HTTPが停止しているだけで、この状態でもUDPでの8554番ポートではストリームが出ているようでした。 RTSP over HTTPを有効にしていてもバックグラウンドでUDPでのストリームが出ているのは把握しておりましたが、現状はWebGUI上ではRTSP over HTTPが有効になっていても、実際には有効になっていない、というのが症状のようでした。 なお、この状態でAtomcam自体を再起動させるとRTSP over HTTPは有効になるようでした。

kazuna02 commented 2 years ago

遅くなりました。 単に動作が遅いだけなのかとも考えたのですが、 RTSP Main OFF 音声 OFF RTSP Sub ON 音声 ON の状態でRTSP Subは映像・音声ともに出力。

RTSP Main ON 音声 OFF で「設定」を押下するとRTSP Mainの映像はOK。

RTSP Main ON 音声 ON で「設定」を押下してもRTSP Mainの音声は出ず。 RTSP Subは映像・音声ともに出力。 恐らくリブートやプロトコル変更等、設定変更があるまで音声出力が開始されない模様。 それまでは無音のままとなります。

指示通り何度かログを取得しました。 3つ目が上記手順でRTSP Mainの音声が出力されなかった時のログとなります。 原因究明の参考になるかは分かりませんが…。

---- FPGA board is ready ----
  Board UID : 30AB6E51
  Board HW ID : 72000460
  Board rev.  : 5DE5A975
  Board date  : 20190326
-----------------------------
local_sdk_video_set_encode_frame_callback streamChId=0, callback=0x4054a0
enc func injection save video_encode_cb=0x4054a0
!! The specified ScalingList is not allowed; it will be adjusted!!
local_sdk_video_set_encode_frame_callback streamChId=1, callback=0x405480
enc func injection save video_encode_cb=0x405480
local_sdk_video_set_encode_frame_callback streamChId=3, callback=0x405460
Opening V4L2 device: /dev/video0 24
Opening V4L2 device: /dev/video1 25
local_sdk_audio_set_pcm_frame_callback streamChId=0, callback=0x4218d0
enc func injection save audio_pcm_cb=0x4218d0
[command] jpeg capture error 32 33
---- FPGA board is ready ----
  Board UID : 30AB6E51
  Board HW ID : 72000460
  Board rev.  : 5DE5A975
  Board date  : 20190326
-----------------------------
local_sdk_video_set_encode_frame_callback streamChId=0, callback=0x4054a0
enc func injection save video_encode_cb=0x4054a0
!! The specified ScalingList is not allowed; it will be adjusted!!
local_sdk_video_set_encode_frame_callback streamChId=1, callback=0x405480
enc func injection save video_encode_cb=0x405480
local_sdk_video_set_encode_frame_callback streamChId=3, callback=0x405460
Opening V4L2 device: /dev/video0 23
Opening V4L2 device: /dev/video1 24
local_sdk_audio_set_pcm_frame_callback streamChId=0, callback=0x4218d0
enc func injection save audio_pcm_cb=0x4218d0
---- FPGA board is ready ----
  Board UID : 30AB6E51
  Board HW ID : 72000460
  Board rev.  : 5DE5A975
  Board date  : 20190326
-----------------------------
local_sdk_video_set_encode_frame_callback streamChId=0, callback=0x4054a0
enc func injection save video_encode_cb=0x4054a0
!! The specified ScalingList is not allowed; it will be adjusted!!
local_sdk_video_set_encode_frame_callback streamChId=1, callback=0x405480
enc func injection save video_encode_cb=0x405480
local_sdk_video_set_encode_frame_callback streamChId=3, callback=0x405460
Opening V4L2 device: /dev/video0 23
Opening V4L2 device: /dev/video1 24
local_sdk_audio_set_pcm_frame_callback streamChId=0, callback=0x4218d0
enc func injection save audio_pcm_cb=0x4218d0
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640
[audio] drop packet: ch0 640
[audio] drop packet: ch1 640

再現手順 Screen shot

mnakada commented 2 years ago

Ver.1.4.4でaudioのalsaのbufferが詰まった時にクリアする処理を追加しました。 これで直るのではないかと思います。

kazuna02 commented 2 years ago

Ver1.4.5でも同様の現象が見られます。 ただ、一度リブートすればスイッチと連動するので「まぁ良いか」とも思っています。

YouTube動画(リンクになっています) Youtube

また、逆の現象も見られました。

RTSP Main ON 音声 ON RTSP Sub ON 音声 ON

から

RTSP Main OFF RTSP Sub ON 音声 ON

に変更してもRTSP Mainは音声ストリームだけ流れ続けます。 これらはRTSP Main側にだけ見られる現象でRTSP Sub側では再現できませんでした。※ また、atomerr.logを確認したところ引き続き [audio] drop packet: ch1 640 は 記録されていましたが [audio] drop packet: ch0 640 は発生しなくなりました。※ いずれもリブート若しくはプロトコル変更後はスイッチに連動する様です。 ※確証もてない

RTSP01

VLC Player コーデック情報 RTSP01

accept commented 2 years ago

1.4.5を試してみました。 やはり2台ほどWebGUIよりRTSP関連オプションをオンオフしたり再起動したりしないとRTSP over HTTPが動かないような動作が見受けられました。 しかし、一度動き出してしまえば特に問題なく動作するようです。 そもそものIssueとしてあげさせていただいた音も現状どの個体も出ています。 なんと言いましょうか、特定の再現性のある不具合が均等に発生していないのでなかなか報告しづらいところが心苦しい感じですね…

mnakada commented 2 years ago

Ver.1.4.6で起動直後にaudio 0 側がenableにならない問題対応しました。

accept commented 2 years ago

@mnakada 度重なる修正ありがとうございます。 先ほど1.4.6を試してみました。 うちにあるAtomcamのうち1台だけSwingがあるのですが、その個体のみアップデート後に映像が出力されず、何度かWebGUIよりオンオフを繰り返したところNASからは見えないが、VLCでは上端に滲みのある像が出力された状態となりました。 2022-07-04 WebGUIでのオプションはこのような状態です。 タイトルなし

UbuntuよりGstreamerにて接続を行ってみましたところ、以前と同じようにsprop-parameter-setsにゴミが入り込んでいるようでした。 logが膨大のため、ファイル添付の形を取らせていただきました。 gs.log

RTSPのlogにもなにやら失敗しているようなものが見受けられましたので載せておきます。

log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500

[NOTICE] main.cpp:310
    Version: 1 live555 version:2016.01.29
[ERROR] main.cpp:317
    Failed to create RTSP server: bind() error (port number: 8554): Address already in uselog level:500

[NOTICE] main.cpp:310
    Version: 1 live555 version:2016.01.29
[ERROR] main.cpp:317
    Failed to create RTSP server: bind() error (port number: 8554): Address already in uselog level:500

[NOTICE] main.cpp:310
    Version: 1 live555 version:2016.01.29
[ERROR] main.cpp:317
    Failed to create RTSP server: bind() error (port number: 8554): Address already in uselog level:500

[NOTICE] main.cpp:310
    Version: 1 live555 version:2016.01.29
[ERROR] main.cpp:317
    Failed to create RTSP server: bind() error (port number: 8554): Address already in uselog level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device

いつものように再起動したところ正常に戻りましたが、以前にもNASでは映らず、VLCで確認するとこの状態ということがありましたので、トリガーは不明ですが何かの拍子にこのような状態に陥ることがあるようです。 なおこの状態では音も出ていないようでした。 ただ、現状再起動さえしてしまえば正常に動作しますのと、発生頻度がかなり低めなので不便はしておりません。 このようなこともあった程度に、何らかの参考になりましたら幸いです。

mnakada commented 2 years ago

ちょっと再現しないです。 現象からすると、なんか他のデータが混ざってきてるんですかね。 バッファのoverflowとかかな。。。

accept commented 2 years ago

@mnakada バージョン番号は失念してしまいましたが、こちらのIssueを建てるより前のバージョンではたまにこの上端虹縞模様が発生しておりました。 こちらのIssueにて前にご報告させていただいたとき、確か1.4.2では虹縞模様は出ず、VLCではエラーが出て再生不能なほどゴミが入り込むというのが、たまに発生しておりました。 あの時と今回のゴミが入り込むのとはまた違うバグかもしれませんが…

ただ、以前Atomcam1にて1個体だけどうやっても一定時間が過ぎると勝手に再起動が入ってしまうものがあって、これはHackFWもしくはSDの問題かと思っていたのですが、SDを抜いても現象が出続けまして… 最終的に本体ファームウェアを本家よりダウンロードし、SDよりdemo.binで書き込み直したところ直りましたので、もしかしたらHackFWだけの問題ではなく、本体側や使っているSDが悪さしてる可能性もあるかもしれないですね… とりあえず、今後も再現手法を探してみます。

accept commented 2 years ago

1.4.7に更新してみました。 更新方法は全てWebGUIよりUpdateボタンにて1.4.6からの更新を行いました。 うちにあるHackFWを導入している8台のAtomcamのうち、1台はsprop-parameter-setsにゴミが入りVLCにて閲覧不能。 Gstreamerでのlogは下記のような感じです。 gstreamer.log

1台はRTSPが停止したようで、UDPでも接続不能状態でした。 rtspserver.logは下記のような感じです。

log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device

ゴミが入り込む方は再起動したところ正常復帰しましたが、RTSPが立ち上がっていなかったものは再起動しても接続できず、WebGUIよりオプションをオフにしてから設定ボタンを押し、再度オンにしてから設定ボタンを押したところ復旧しました。 相変わらず復旧してしまえば正常動作、という感じです。 発生トリガーは今のところつかめそうにないですね… こう、気付かずに発生していると困るけれど、全部のAtomcamに確実に発生するわけでもなく、気付いたときに再起動なりオプションなりを触ると直ってしまうという微妙に困らないようで困るのが何ともムズムズします…

gtxaspec commented 2 years ago

@mnakada the ioctl errors were fixed by a bug report I submitted to v4l2rtspserver.

see https://github.com/mpromonet/v4l2rtspserver/issues/277#issuecomment-1153117177

maybe the server can be upgraded to the latest version if there are no compatability issues

mnakada commented 2 years ago

@gtxaspec , Thanks! I will replace it in the next release.

accept commented 2 years ago

1.4.8を使わせていただきました。 同時に実装されたHEVCが魅力的だったためそちらも使用させていただきました。 まず、HEVCとAVCの切り替えスイッチですが、私の環境ではHEVCにスイッチしているとAVCのほうの文字が緑になるのですが、これは正しい動作でしょうか。 2022-07-11

なんと言いましょうか、スイッチはHEVC側に切り替わっていますが、AVCが緑なのでAVCが有効なようにも見えてしまう気がして… 意図的であれば失礼いたしました…

動作に関しては若干不安定といいましょうか… 音の方は自分の環境では今のところ出ないという現象は無くなったのですが、たまにRTSPが停止するようです。 VLCにて閲覧中に気付いたら映像のタイムスタンプが停止していてよく見たら映像が止まっておりました。 それでもVLCのほうは接続が切れていると認識せず、左下シークバー付近の経過時間はずっと増えていました。 NASの方では接続解除と出ていたので、それぞれに接続されているかを検知する方法が違うのでしょうかね… これは現状8台のほぼ24時間連続稼働で2台に発生という感じです。 rtspserver.logは下記のような感じで、止まっていることを示すものは何も残っていませんでした。

log level:500
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device
VIDIOC_STREAMOFF: Inappropriate ioctl for device
VIDIOC_REQBUFS: Inappropriate ioctl for device

また、これが関係あるのかはわかりませんが、NASから見るとたまに下の画像のように1秒~3秒ほど(変動します)像がグレーかつ下に緑の線という状態になることがあります。 この状態が頻発しだすと最終的にRTSPが停止しているような気がするのですが、この現象はVLCで同時に再生していてもVLC側では起きないので、もしかしたらNAS側の問題かもしれません… nas

このような状態ですが、HEVCの対応は本当にありがたく、とても助かっております。 ありがとうございます。

mnakada commented 2 years ago

まず、HEVCとAVCの切り替えスイッチですが、私の環境ではHEVCにスイッチしているとAVCのほうの文字が緑になるのですが、これは正しい動作でしょうか。

これはbugですね。修正します。 local build した時は正常だったのですが、リリースイメージをbuildした時におかしくなったみたいです。

HEVCはまだ少し動作不安定です。 たまに止まる現象と、灰色の画面に動きのある箇所だけ表示される現象が起きる事があります。どこかのバッファの容量不足でフレームのデータサイズの大きいI-pictureを取りこぼしているような気がしますが、もう少し時間がかかりそうです。

accept commented 2 years ago

@mnakada ありがとうございます。 WebGUIでの色はbugだったのですね。安心いたしました。

HEVCの方は、やはりまだ不安定なのですね。 グレー画面はうちだけの現象ではないようで安心いたしました。 バッファ周りということで、確かに映像をよくみて見ると2秒おきに0.2秒ほど一瞬動画が止まってから流れてを繰り返しているようにも見えますね。 RTSPや動画処理の詳しい流れを理解しているわけではないのですが、送信処理が間に合わずバッファが溢れて、みたいな感じなのでしょうか… HEVCに対応していただいたというだけでもありがたいですので、安定動作は気長に待つことにいたします。

一応以前に指南頂いた手法でatomerr.logも取得してみましたので載せておきます。 何かのお役に立ちましたら幸いです。

---- FPGA board is ready ----
  Board UID : 30AB6E51
  Board HW ID : 72000460
  Board rev.  : 5DE5A975
  Board date  : 20190326
-----------------------------
local_sdk_video_set_encode_frame_callback streamChId=0, callback=0x44d5e0
!! The specified ScalingList is not allowed; it will be adjusted!!
local_sdk_video_set_encode_frame_callback streamChId=1, callback=0x44d5c0
enc func injection save video_encode_cb=0x44d5c0
local_sdk_video_set_encode_frame_callback streamChId=3, callback=0x44d5a0
enc func injection save video_encode_cb=0x44d5a0
local_sdk_audio_set_pcm_frame_callback streamChId=0, callback=0x415870
enc func injection save audio_pcm_cb=0x415870
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640
[audio] drop packet: ch0 640

とりあえず、そもそものこのIssueの音に関しては解決されたように思いますので、他の方のご報告がしばらく続かないようであれば折を見てCloseにしようかと思います。

accept commented 2 years ago

私の方でIssueの内容である音の問題が解決し、他の方のご報告も続かないようなのでCloseさせていただきます。 皆様、情報提供などありがとうございました。 また、 @mnakada 様、迅速な対応を頂きありがとうございました。 お忙しい中の修正作業など痛み入ります。 今後のHEVC安定動作を楽しみにしております。 ありがとうございました。