录屏帧率是多少

What is the frame rate of screen record

我正在使用 adb screenrecord 功能来录制我的游戏视频。我知道默认比特率是 4Mbps。但是帧率呢?
我怎么知道什么是框架以及如何改变它?

录屏的时候一般选项很少。您可以为 ADB shell 命令添加一些修饰符,例如 --bit-rate--size <WIDTHxHEIGHT>。您还可以使用 --time-limit <TIME> 命令更改最大视频长度,但您必须每次都这样做。但是,对于屏幕旋转您无能为力——根本不支持它。如果旋转屏幕,部分视频将被截断。 例如,您可以通过使用将比特率从 4mbps 更改为 8mbps adb shell screenrecord --bit-rate 8000000 /sdcard/pull_request.mp4 有关支持的分辨率、比特率和问题的详细信息,请参阅此 link。通过使用 adb screenrecord 你只能改变比特率!!! 比特率取决于编解码器和分辨率。帧率取决于系统工作和视频播放过程中的变化!

关于比特率和帧率: 您可以使用分辨率和帧率找到未压缩视频的比特率,并通过近似找到无损视频,但有损视频的比特率与帧率和分辨率无关(嗯,除了 quality/constant 量化模式,但这些并不是真正可预测的)。反正 Pixels width * pixels height * bits per pixel * framerate / 1024 bits in a kilobit 应该为未压缩的做 即 640 * 480 * 24 (rgb) * 23.976 / 1024 = 172,627 kbps

帧速率是可变的,不是固定的。每次屏幕更新时,都会记录一帧。如果屏幕未更新,则不会记录任何帧。因此没有设置帧率,因为它是由系统更新屏幕的速度决定的。

在大多数设备上,这将是最大 60fps。如果你想以较低的速率录制,或者有一个固定速率的视频,你将需要使用类似 ffmpeg 的东西来转换它。

可以在 bigflake page 上找到更多信息。

要查看实际效果,您可以在 screenrecord v1.2 中启用 --bugreport 标志(首次在 Android 5.0 "Lollipop" 中发布)。这给每个单独的帧一个数字和一个时间戳。您可以在 this video.

中看到它的实际效果

无法在录制屏幕时强制设置帧速率值。然而,很多软件在处理可变帧率方面存在问题。我偶然发现的解决方法是使用 ffmpeg 命令行实用程序并执行如下操作:

ffmpeg -i "test.mp4" -c:v libx264 -preset ultrafast -crf 15 -r 30 -threads 8 -c:a copy "test_new.mp4"

这会将 test.mp4 视频转换为 test_new.mp4,固定帧率为 30 fps。 我知道原来的问题已经很老了,但也许它会对某人有所帮助。