私はC920カメラからオーディオとビデオをキャプチャするためのパイプラインを用意していますが、これは非常に単純な処理(低いCPU要件)を行い、再圧縮し、ファイル。flvmuxはオーディオと同じレートでビデオをプルしません
これは、パイプラインの概要です:私の '簡単な処理' の領域を心配しないでください
Platform:
- Raspberry Pi 3
- Debian Jessie
- GStreamer 1.8
。私の全体的なCPUは25%未満のCPUを占めています。
私が見つけたのは、Q3とQ4がゆっくりと満たされ、しきい値に達すると音声がすべて途切れてしまうことです(alsasrcの警告が表示されます。 キューにリークを入れることはできますが、それはほとんど問題を解決していません。
私のパイプラインが実行されているように、これは私のキューが(ミリ秒で、現在のレベル-時間)のように見えるものです
QUEUE CONTENTS IN MILLISECONDS
TIME(s) Q1 Q2 Q3 Q4 Q5 Q6
0 0 0 0 0 0 0
5 0 0 252 380 0 0
10 0 0 293 460 0 0
15 0 0 332 470 0 0
20 0 0 378 451 0 0
25 0 0 333 460 0 0
30 0 0 383 480 0 0
35 0 0 500 550 0 0
40 0 0 500 610 0 0
45 0 0 539 630 0 0
50 0 0 584 670 0 0
=== EXPERIMENT ===
私は黄色を削除私はビデオをキャプチャしていたので、結果はよかったです。私はちょうど「成長し続けている」キューがなく、出力ビデオは完璧でした。
QUEUE CONTENTS IN MILLISECONDS
TIME(s) Q1 Q2 Q3 Q4 Q5 Q6
0 0 0 0 0 0 0
5 0 0 2 0 0 0
10 0 0 5 0 0 0
15 0 0 8 0 0 0
20 0 0 8 0 0 0
25 0 0 8 0 0 0
30 0 0 8 0 0 0
35 0 0 8 0 0 0
40 0 0 8 0 0 0
45 0 0 8 0 0 0
50 0 0 8 0 0 0
また、私は完全な成功で、(私はダイアグラムからキューを省略している)は、次のパイプラインを試してみました - 動画は問題なく少なくとも10分間記録しました。
=== === QUESTIONで何が起こっているのか
?
私の推測では、Q3(ビデオ出力)がいっぱいになっているので、オーディオが遅くなるはずです。 Q4がいっぱいで、Q5ではないので、ATSエンコーダが圧縮できるよりも速くATSAがオーディオを生成している必要があります。 しかし、私のCPU使用率は非常に低いです - 私は2つのaacエンコーダ(voaacencとavenc_aac)とMP3エンコーダを使ってみましたが、すべて同じ問題があります。
======== UPDATE私はPTSをオーディオ、およびビデオ(直後)の後にアイデンティティ要素のカップルを入れて、グラフ化しました
=========その出力の。あなたは彼らが非常に迅速にお互いから漂い始めるのを見ることができます。ビデオが30秒になる頃には、オーディオは21秒でかなり遅れています。 は、ここでは、第2のカメラを有し、その上にスワップ
チャート
======== UPDATE 2 =========であり、そして問題はなくなった。オーディオとビデオのPTS値は少なくとも25分間同期していました。 この新しいカメラとの違いは、改造されたC920で、カスタムレンズが装着されていることです。レンズは偶然完全にピントがずれてしまいました。これがPTSドリフトを修正したものです(カスタムレンズに焦点を合わせると、同じPTSドリフトが得られます)。
質問が少し変わりました。なぜ、ピントが合っているC920カメラがPTSをひどくドリフトさせるのですか? 注:私は自動露出をオフにしており、露出絶対値をデフォルトの250に設定しています。 しかし、私は自動露出を使用できるようにしたいと思います...
おそらく関連していますか? https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=165002 – Adam
処理中にタイムスタンプで何か処理を行いますか? – Velkan
また、処理中に 'appsink'がありますか? 'GST_DEBUG'変数をクランプするとレイテンシ計算に関するログはありますか? – Velkan