私はPythonからgstreamer 0.10を使用して、v4l2ビデオソースを同時に表示し、それをxvid-in-aviに記録しようとしています。長い間、コンピュータはこれを実行するのに十分速くなりますが、別のプログラムがディスクを使用するとフレームをドロップします。それは十分に悪いですが、再生時に、フレームレートの低いフレームでエンコードできるフレームを表示するのではなく、フレームがドロップされたビデオに動きのバーストがあります。フレームを落とさずにgstreamerでライブビデオを録画する方法はありますか?
パイプラインはv4l2src ! capsfilter ! tee ! queue ! xvidenc ! avimux ! filesink
で、ティーもqueue ! xvimagesink sync=false
にシンクします。私はxvidenc
の前にvideorate
を追加しようとしましたが、それは事態を悪化させるようです。
私はこのパイプラインで非圧縮ビデオをディスクにスプールし、バックグラウンドスレッドでエンコードすることを検討しました。この問題を解決するために他に何ができますか? xvidenc
またはavimux
は、落としたフレームで間違ったことをしていますか?エンコーダに先行するキューのサイズを大幅に増やすことはできますか?
どうでしょう、あなたのチャンクに出力され、各チャンクは、すぐにそれがトランスコードされているように削除することができますか? – joeforker
モーションJPEGに切り替わりました。圧縮はひどいですが、CPUに過大な負荷をかけません。 – joeforker