私はそのようなものを使用しています:
avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm
どこ:
-f x11grab
-入力の画面キャプチャ「フォーマット」を強制します。
-s 1024x768
入力ファイルの解像度です(別名キャプチャ領域)。たとえば、デスクトップの解像度と同じです。それより小さい場合、記録領域は左上になります。この例では、1024x768の記録領域を使用しました。
-r 24
- フレームレート。基本的に、スムーズな録画画像を提供するために実際の映画で使用される23〜30 FPS。ただし、スクリーンキャストでは、これを減らして、より低いビットレートでより良い画像を得ることができます。ゲーム画面のキャプチャには24を使用しました。
-i 0:0
ソースとしてディスプレイ0:0を使用するためのヒントです(デバイスはxorg表記です)。モニターが1つしかなく、デフォルトのXorgセットアップがある場合、ほとんどの場合0:0で問題ありません。
-deadline realtime
-libvpxへのヒントです。ライブキャプチャが必要です。リアルタイムのパフォーマンスが必要です。そのため、libvpxは、リアルタイムでVP8をエンコードするのが最善です。これを行うには、速度と品質をいくらか犠牲にします。与えられたビットレートでの品質は、非リアルタイムの方法よりも少し悪くなります。しかし、エンコード速度は急上昇します。したがって、私のハードウェアでは、フレームを落とさずに、1024x768 @ 24FPSの激しいシーンを処理できます(ただし、強力なCPUを推奨します)。この例では、適切なFPSで適切な品質のライブキャプチャと、かなり広いキャプチャ領域が必要でした。そのため、コーデックによるCPU使用率が問題になる可能性があります。良い結果を得るためにこのヒントが本当に必要だったのはそのためです。
-b 5000000
-ビット/秒単位のターゲットビットレート。私は5Mビットを使用して、かなり激しいシーンの多かれ少なかれ良い画像を取得しました。コーデックは、ビデオの平均ビットレート速度をこの値に近づけようとします。この値が低いほど、品質が低下し、ファイルが小さくなります。少し実験して、特定の用途に適したビットレートを知ることができます。ビデオ共有サービスは、オーバーシュートするとビデオをダウンコンバートします。独自のサーバーを使用する場合は、トラフィックを処理するのはユーザー次第です。アンダーシュートすると、画質が悪くなります。価値を自由に変更して、自分に最適なアイデアを見つけてください。5Mbitsは、画像が過度に圧縮されているのを簡単に見ることができないゲームで、強烈なシーンの多かれ少なかれ目に心地よいライブキャプチャを目的としていました。静止アプリケーションをキャプチャするには、基本的にそれよりもはるかに少ない必要があります。
-minrate
200000-コーデックの最小許容ビットレートです。キャプチャしたいものの性質に応じて、最小ビットレートを強制して、何があっても合理的に見えるピクタイアを維持したい場合があります。コーデックヒューリスティックにより、ビットレートが必要な値よりもはるかに低くなり、一部のシーンで不適切な画像が表示されることがあります。このオプションを使用すると、シーンが単純でビットレートを落とす可能性があるとコーデックが判断した場合でも、コーデックに強制的に最小ビットレートを維持させることができます。このパラメーターの値が大きいと、コーデックがより低いビットレートを使用できないため、ファイルサイズが大きくなる可能性があります。
-maxrate 40000000
-この値は、激しいシーンでの最大バーストビットレートを制御します。一部のシーンで適切な品質を維持するために高速化が必須であると考えられる場合、コーデックを望ましい平均よりもはるかに高くするために、非常に高い値を使用しました。すべての条件で見栄えの良い画像を得るには、これを十分に高く設定することが望ましいです(40MbitsはBlueRayのような速度であり、トリックを行います)。一方、独自のサーバーを使用してストリーミングしようとする場合は、激しいシーンで画質を犠牲にしてこの値を下げる必要があります。それ以外のサーバーは、ユーザーにリアルタイムで配信できないため、目的のバーストビットレートに対応できない可能性があります。プレイヤーはバッファアンダーランに直面します(これは迷惑です)。ビデオ共有サービスは独自に注意を払い、通常は画質を犠牲にしてビデオをより低いパラメーターにダウンコンバートします。
recording-filename-000.webm
-出力のファイル名です。.webm拡張子を使用する場合、ffmpeg / avconvは十分に賢く、WEBMが必要であることを理解できます。それは簡単です-avconvはファイル名から希望の形式を推測します。.WEBMファイルは内部のWEBMです。
それだけです-このコマンドはwebmファイルに直接画面記録を行います。追加の変換は必要ありませんlibvpx
。可能な限り高速にすることをお勧めします。音声入力の仕様がないため、音声はありません。それはあなたが望むものかもしれませんし、そうでないかもしれません。サウンドの場合、サウンドストリームの入力ソースも指定する必要があります。
PSこれは少し複雑に見えるかもしれませんが、1日の終わりに1つのサイズがすべてに適合できないことがわかります。そのため、すべての状況で見栄えの良い画像を取得するには、コーデックのハンドルを使用して調整する必要があります。Ffmpegは、あなたが必要とするかもしれないすべてのハンドルを提供します。これは、ビデオ変換とエンコードの強力な武器です。したがって、この例は、多少高度なエンコーディングを実行したい人にとっては良い開始点であり、実際にまともな結果を得るために少し実験する準備ができています。