私は、FFmpeg の X11grab モジュールを使用してスクリーンキャストの記録を実験してきましたが、これまでのところ多かれ少なかれうまく機能しています。A/V エンコーディングは細かい点が多い複雑なプロセスであることは理解していますが、学ぶために最善を尽くしています。
ストリームの記録中にシステムにできるだけ負担をかけないように、ビデオ ストリームを「軽量」に記録したいと考えています。pacat と sox を使用して、2 つのオーディオ ストリームを別々に録音します。その後、全体がフィルター処理、正規化、エンコードされ、Matroska コンテナーに結合されます。
現在、x264 の yuv4 demuxer に供給される rawvideo ストリームを ffmpeg で記録しています。以前、ffv1 とストレート x264 レコーディングを試しました。私のシステムは、最終ストリームに必要な設定で x264 を使用したリアルタイム エンコーディングを処理できないため、記録が完了したら個別に再圧縮する必要があります。ffv1 ではひどいフレーム ドロップが発生し、yuv4 でも発生することがわかりましたが、それほどではありません。これは、記録されたデータを保持するためだけに使用されている SATA3 Caviar Black に座っている場合でも、ハード ドライブの速度が原因であると思われます。
問題は、どのビデオ コーデックの組み合わせを見ればよいかということです。x264 で直接記録し、後で「より良い」x264 に再圧縮しますか? 生のビデオを圧縮しますか? 発生しているフレーム ドロップなどの問題を特定するにはどうすればよいですか?
編集:これは私が現在使用しているffmpeg行です。
ffmpeg -v warning -f x11grab -s 1920x1080 -r 30000/1001 -i :0.0\
-vcodec rawvideo -pix_fmt yuv420p -s 1280x720\
-threads 0\
recvideo.y4m