web-dev-qa-db-ja.com

Mac OSXでffmpegを介してフルスクリーン録画をキャプチャするときのビデオ解像度

私は15インチの2017MacBook Proを実行していますMac OS X 10.13(High Sierra ): enter image description here デフォルトのディスプレイは2880x1800までの画面解像度をサポートしますが、標準UIで選択できる最大解像度は1920x1200に制限されています( この質問 を参照): enter image description here

今、私はffmpegを介して、 avfoundation デバイスを使用して、フル解像度で(つまり、サブサンプリングなしで)フルスクリーン録画をキャプチャしようとしています。 )::

ffmpeg -y -v error -hide_banner -f avfoundation -i 1:none -threads 0 -f mp4 -vcodec mpeg4 -r 25/1 -qscale:v 1 output.mp4

不思議なことに、画面の解像度が1024x6401920x1200の間で異なる場合(つまり、Mac OS X設定)、結果のビデオラスターのサイズは、常に画面解像度の4倍になります。

  • 1024x6402048x1280
  • .。
  • 1920x12003840x2400

enter image description here

一方、 screenresolution ユーティリティを使用して画面解像度を2880x1800の最大値に設定した場合、ffmpeg出力のサイズは次のようになります。画面の解像度と同じです。

どちらの場合も、-video_sizeオプションはffmpegによって無視されます。

上記は内蔵ディスプレイにのみ当てはまります。外部ディスプレイの場合、スケールレベルに関係なく、画面解像度とキャプチャされたビデオ解像度は常に同じです。

質問:

  1. なぜffmpeg(またはむしろavfoundation入力デバイス)がそのような不整合を示すのですか?
  2. 画面をキャプチャするときにffmpegに常に現在の表示解像度を使用させるにはどうすればよいですか?サブサンプリング(-vf scale=...)を有効にして、結果のラスタ​​ーサイズに影響を与えたくありません。
1
Bass
0
Bass