1

私は gstreamer パイプラインを持っています - この環境で実行しています:

  • ラズベリーパイ3
  • クラス 10 サンディスク 8 GB SD カード
  • Raspbian Jessie、すべて更新
  • Logitech C920 USB 2 ウェブカメラ
  • ソースからコンパイルされた Gstreamer 1.8
  • 追加の USB 周辺機器やデバイスは不要
  • 2A Apple USB 電源 (iPad 充電器)
  • C920 を接続するための電源付き USB ハブの有無にかかわらずテスト済み

H264 映像 (H264.720@24FPS) をキャプチャします。私のパイプラインは、C920 の H264 でエンコードされた出力を受け取り、それを処理します。また、C920 のオーディオを (alsa) キャプチャし、AAC に圧縮し、それをティーに変換します。両方のティーの一方の脚は FLV マルチプレクサに直接接続され、次にバックアップ用のディスクに接続されます。ティーの 2 番目のレッグは (OpenMax を使用して) デコードされ、次に低いビットレートで再圧縮され (再び OpenMax)、最後に FLV が多重化され、ライブ表示のために RTMP サーバーにプッシュされます。

最終的に、結果は基本的に次のようになります。

ここに画像の説明を入力

CPU の使用率は 400% のうち約 50% です (クアッド コアを思い出してください:))

さて、楽しい部分は...

私はこれをすべて機能させました-完全に。それから私はそれをすべてシャットダウンし、ご褒美休憩を取りました。私は夕方に戻ってきて、コードを起動しました...そして約10秒間実行された後、パイプラインが停止しました。停止、一時停止、またはエラーは発生しませんでした。停止しただけで、パケットがディスクとストリームに書き込まれなくなりました。

いくつかの警告とエラーがありましたが、これらは以前に見たことがあり、結果のストリームに影響はありませんでしたが、現在、何らかの理由で、パイプラインの健全性に終止符を打っていました。

0:01:31.219560984  4075  0x1445400 WARN            audiobasesrc gstaudiobasesrc.c:864:gst_audio_base_src_create:<alsasrc0> create DISCONT of 708160 samples at sample 2904320
0:01:31.219736087  4075  0x1445400 WARN            audiobasesrc gstaudiobasesrc.c:869:gst_audio_base_src_create:<alsasrc0> warning: Can't record audio fast enough
0:01:31.219774941  4075  0x1445400 WARN            audiobasesrc gstaudiobasesrc.c:869:gst_audio_base_src_create:<alsasrc0> warning: Dropped 708160 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.
WARNING: from element /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Can't record audio fast enough
Additional debug info:
gstaudiobasesrc.c(869): gst_audio_base_src_create (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
Dropped 708160 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.

それで、私が残したわずかな髪を抜いた後、私はそれをまとめて一晩呼びました. 今朝、私は再びそれをつかみ、新たに始める準備ができました. コードを起動すると... 再び動作しています...問題はありません!! 何が起きてる???

機能している、機能していない、そして再び機能する間で変化した唯一のことは、時刻でした。

それから私は考えました。コードを数分間実行しました。問題はありません。すべて問題ありません...その後、カメラをラップトップバッグの中に入れたので、何も見えませんでした。10 秒後、パイプラインが失速しました!!!

パイプラインをファイルシンクだけに簡素化し (tee、OMX 要素、および rtmpsink を削除)、テストを再実行しました。今回は完全に失速することはありませんでしたが、「十分な速度でオーディオを録音できません」という警告が表示され、結果のファイルには重大なオーディオ ドロップアウトがありました。

つまり、Logitech C920 は、暗い環境にあると、何らかの理由で詰まるように見えます。

他に気付いたことはありますが、これが関連しているかどうかはわかりません...しかし、録音には常に振動する高周波ノイズ (約 16khz) が含まれています。カメラを耳にかざすと、同じ音がカメラから発せられているのが実際に聞こえます。カメラのレンズを覆うと音が止まります。カメラのオートフォーカスをオフにし、絶対フォーカスレベルを「0」に設定すると、ノイズもほとんどなくなります。私はそれらを約6台持っているので、これが不発カメラではないことを知っていますが、それらはすべて同じように動作します. これらすべてでこれを試したので、それが悪いRaspberry Piではないことも知っています

  • 3 * ラズベリーパイ 3
  • 1 * ラズベリーパイ 2 B+
  • 2 * ラズベリーパイ B+

誰でもこれに光を当てることができますか?

=====================================

その他の注意事項:

  • mjpeg をキャプチャする (カメラの h264 エンコーダーをアクティブにしない) と、カメラからの可聴ノイズが防止されます。カメラの DSP が原因でノイズが発生していることを示します。
  • mpjeg をキャプチャすると、面白いことが起こります...結果として得られるビデオ ファイルは、カメラが暗闇にある間に大量のフレームを落としたように見えます.再び光が当たると、ビデオはオーディオよりも数秒進んでいます.
4

2 に答える 2