私は 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 をキャプチャすると、面白いことが起こります...結果として得られるビデオ ファイルは、カメラが暗闇にある間に大量のフレームを落としたように見えます.再び光が当たると、ビデオはオーディオよりも数秒進んでいます.
