私は15インチの2017MacBook Proを実行していますMac OS X 10.13(High Sierra ): デフォルトのディスプレイは2880x1800
までの画面解像度をサポートしますが、標準UIで選択できる最大解像度は1920x1200
に制限されています( この質問 を参照): (
今、私は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
不思議なことに、画面の解像度が1024x640
と1920x1200
の間で異なる場合(つまり、Mac OS X設定)、結果のビデオラスターのサイズは、常に画面解像度の4倍になります。
1024x640
→2048x1280
1920x1200
→3840x2400
一方、 screenresolution
ユーティリティを使用して画面解像度を2880x1800
の最大値に設定した場合、ffmpeg
出力のサイズは次のようになります。画面の解像度と同じです。
どちらの場合も、-video_size
オプションはffmpeg
によって無視されます。
上記は内蔵ディスプレイにのみ当てはまります。外部ディスプレイの場合、スケールレベルに関係なく、画面解像度とキャプチャされたビデオ解像度は常に同じです。
ffmpeg
(またはむしろavfoundation
入力デバイス)がそのような不整合を示すのですか?ffmpeg
に常に現在の表示解像度を使用させるにはどうすればよいですか?サブサンプリング(-vf scale=...
)を有効にして、結果のラスターサイズに影響を与えたくありません。これは既知のffmpeg
の問題のようです: HiDPI/Retina画面記録からのピクセル密度メタデータを保持する必要があります 。