問題タブ [gstreamer-1.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - gstreamer-1.0 GUI を介した記録パイプラインの停止と開始
ARMプロセッサとWayland + Qtをウィンドウサブシステムとして使用した独自のカスタムボード用のgstreamerフレームワークに基づいて、単純なビデオレコーダーを作成しようとしています。rec_start スロットと rec_stop パブリック メソッドを使用してクラス RecordBin を作成しました。
これは、再生/停止ボタンをクリックするためのメインウィンドウの私のスロットです:
RecordBin クラスは別のスレッドで動作し (QThread を介して実現されます)、glib メインループ コンテキストが Qt メイン ウィンドウをブロックしないようにします。rec_stop メソッドをスロットとして使用できません。rec_loop がメッセージ処理をブロックし、記録が開始されたときにシグナルを介して停止できないためです。ただし、rec_stop の直接呼び出しはスレッドセーフではありません。
1.別のスレッドからパイプラインの状態を変更するにはどうすればよいですか? 2. パイプラインの状態を NULL に変更して記録を停止するのは正しいですか? おそらく、バス上で EOS 信号を送信して処理する必要がありますか?
raspberry-pi - flvmux がビデオをオーディオと同じレートでプルしない
C920カメラからオーディオとビデオをキャプチャし、非常に単純な処理を行い(CPU要件が低い)、再圧縮してファイルに多重化するパイプラインがあります。
これは、パイプラインの一般的な概要です。
私の「単純な処理」領域について心配しないでください。私の全体的な CPU は 25% 未満の CPU です。
私が見つけたのは、Q3とQ4がゆっくりといっぱいになり始め、1つがしきい値に達するまで、オーディオがすべて途切れ途切れになることです(そして、alsasrcから「ダウンストリームがバッファを十分に消費していません」という警告が表示されます)。キューにリークを置くことはできますが、それで問題が解決することはほとんどありません。
私のパイプラインが実行されているので、これは私のキューがどのように見えるかです (ミリ秒の現在のレベル時間)
=== 実験 ===
パイプラインの黄色の脚を取り外して、ビデオのみをキャプチャするようにしましたが、結果はより良くなりました。「成長」し続けるキューはありませんでした。出力ビデオは完璧でした。
また、次のパイプラインを試してみました (図からキューを省略しました)。完全に成功しました。ビデオは少なくとも 10 分間は問題なく記録されました。
=== 質問 ===
何が起こっている?
私の推測では、Q3 (ビデオ出力) がいっぱいになっているため、オーディオが速度を落としているに違いありません。Q5 ではなく Q4 がいっぱいになっているため - これは aac エンコーダーが圧縮できるよりも早く alsa がオーディオを生成していることを意味するに違いありません - それは正しいですか? ただし、私の CPU 使用率は非常に低く、2 つの aac エンコーダー (voaacenc と avenc_aac) と MP3 エンコーダーを試しましたが、すべて同じ問題が発生しました。
======== 更新 =========
オーディオとビデオ (直後) の後にいくつかのアイデンティティ要素を配置し、それらの出力の PTS をグラフ化しました。それらが非常に急速に互いに離れ始めていることがわかります。ビデオが 30 秒になるまでに、オーディオは 21 秒遅れています。ここにチャートがあります
======== 更新 2 =========
私は 2 台目のカメラを持っていましたが、それを交換したところ、問題は解消されました。オーディオとビデオの PTS 値は、少なくとも 25 分間同期されていました。この新しいカメラとの違いは、C920 を改造してカスタム レンズを装着したことです。偶然にも、レンズの焦点が完全にずれていました。これが PTS ドリフトを修正したものです (カスタム レンズの焦点を合わせると、同じ PTS ドリフトが発生します)。
では、質問が少し変わりました: 焦点が合っている C920 カメラの PTS がひどくドリフトするのはなぜですか? 注: 自動露出をオフにして、露出絶対値をデフォルトの 250 に設定しています。ただし、自動露出を使用できるようにしたいのですが...
android - Qt for Android - ANativeWindow_fromSurface への未定義の参照
私は Qt の初心者です。Qt
を使用して Android アプリケーションを作成し、GStreamer (QtGStreamer ではない) を使用して RTSP を介してビデオをストリーミングしようとしていました。
しかし、私が使用したとき
ANativeWindow を取得しようとすると
、エラーが発生しました:undefined reference to 'ANativeWindow_fromSurface'
QT += androidextras
.pro と.cpp ファイルに追加しました
#include<android/native_window.h>
#include<android/native_window_jni.h>
が、他に何をすべきかわかりません。
この問題を解決するのを手伝ってくれる人はいますか?
ありがとう。