我正在使用adb screenrecord功能来录制我的游戏视频。我知道默认比特率是4Mbps。但帧速率怎么样?
我怎么知道框架是什么以及如何改变它?
答案 0 :(得分:7)
在录制屏幕时无法强制帧速率值。但是,很多软件在处理可变帧率方面存在问题。我偶然发现的解决方法是使用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。
我知道原来的问题已经很老了,但也许会帮助别人。
答案 1 :(得分:4)
帧速率是可变的,不是固定的。每次更新屏幕时,都会记录一帧。如果屏幕未更新,则不记录任何帧。因此,没有设置帧速率,因为它取决于系统更新屏幕的速度。
在大多数设备上,最大值为60fps。如果您想以较低的费率录制,或者拥有固定费率的视频,则需要使用类似ffmpeg的内容进行转换。
可以在bigflake page上找到更多信息。
要查看此操作,您可以在screenrecord v1.2中启用--bugreport
标记(首先在Android 5.0“Lollipop中发布”)。这为每个单独的帧提供了数字和时间戳。您可以在this video中看到它。
答案 2 :(得分:0)
录制屏幕时,一般情况下很少有选项。您可以将一些修饰符添加到ADB shell命令,如--bit-rate
和--size <WIDTHxHEIGHT>
。您也可以使用--time-limit <TIME>
命令更改最大视频长度,但必须一次性完成。但是,您无法对屏幕旋转做任何事情 - 它根本不受支持。如果您旋转屏幕,部分视频将被切断。
例如,您可以使用,将比特率从4mbps更改为8mbps
adb shell screenrecord --bit-rate 8000000 /sdcard/pull_request.mp4
有关支持的分辨率,比特率和问题的详细信息,请参阅此link。使用adb screenrecord
你只能改变比特率!
比特率取决于编解码器和分辨率。帧率取决于系统工作和视频播放过程中的变化!
关于比特率和帧率:
您可以使用分辨率和帧速率找到未压缩视频的比特率,通过近似值找到无损视频,但有损视频的比特率是帧率和res独立的(好吧,除了质量/恒定量子模式,但那些不是't&t; t真的可以预测)。无论如何
Pixels width * pixels height * bits per pixel * framerate / 1024 bits in a kilobit
应该为未压缩而执行此操作
即640 * 480 * 24 (rgb) * 23.976 / 1024 = 172,627 kbps