2019年,智能手机品牌在相机质量上有了巨大的飞跃,尤其是在变焦和微光方面。另一方面,视频质量并没有得到同等的重视。2020年,随着高通骁龙(Qualcomm Snapdragon) 865网络服务提供商(ISP)的改进,这种情况可能会改变。然而,尽管Android智能手机的内置存储容量越来越大,调制解调器的速度也越来越快,而且现在还支持5G网络,但有一个老的限制让大多数手机无法保存超过4GB的视频文件。然而,这可能会在Android 11中发生改变,下一个主要版本的Android将于2020年发布。
我将尝试在不深入讨论技术方面的情况下总结此限制背后的原因。基本上,谷歌决定Android的MediaMuxer和MPEG4Writer类分别负责muxing(合并)视频文件并将它们保存为MP4文件,它们应该支持输出最大大小为2^32 - 1字节的MP4文件,即大约4GB。这个决定是在2014年初,当谷歌Nexus 5最大32 gb的内部存储仍在市场上,SD卡仍然广泛使用,和第一个手机4 k录像刚刚进入市场(注3)星系。因此,并没有太多的要求保存视频文件超过4 gb大小:大多数手机没有足够的存储空间,SD卡在FAT32格式不支持,甚至一些手机记录在足够高的质量满足这一限制。快进5年,很多东西都改变了:现在有1TB的存储空间的手机,SD卡是例外而不是常态,4K视频录制无处不在,8K的视频录制很快就会到达设备。
今天,如果你录制一个4K视频,你的视频将在大约12分钟内达到4GB的大小;这是默认的质量设置,帧速率为30fps,比特率为48Mbps。在录制约12分钟后,摄像头应用程序会保存视频,并立即开始录制另一个视频——而用户不会注意到。当你查看手机的DCIM文件夹时,你会注意到原本应该是一个连续的视频记录被分成了多个视频文件。例如,在我的Pixel 4上录制的73分钟视频被分成7个不同的文件——谷歌照片将所有这些文件都视为单独的录音。在上传至谷歌照片之前,对这些MP4文件进行mux并不困难,但如果你想这样做,你必须使用第三方应用程序。我想,大多数人都不愿费心,也不知道该怎么做。
一个73分钟的4K30视频记录从我的像素4分裂成7个不同的文件。
开发者们多年来一直在寻求一种能够录制大于4GB的视频文件的方法,现在看来Android 11终于要改变了。根据AOSP gerrit中对新提交的描述,谷歌正在更新Android的媒体类,以消除32位文件大小限制。具体来说,Android现在将“在mpeg4writer中使用64位偏移量”,这允许Android“撰写/mux文件的大小超过4GB”。在测试过程中,谷歌成功地组成了一个32GB大小的文件,在另一个单独的测试中,谷歌甚至成功地用一段录音就填满了手机的全部存储容量。最大文件大小为2^64 -1字节是非常大的,而且永远不会达到这个要求,所以我们希望谷歌能够限制MediaRecorder API或原始设备制造商来限制他们的相机应用程序来支持一个更合理的最大文件大小。然而,像OpenCamera这样使用Camera2API的应用程序应该仍然能够任意设置它们想要的最大文件大小,而不必担心32位文件大小的限制。
OpenCamera的视频录制设置
提交还没有被合并,但是当它被合并的时候,我们希望这个变化能反映在Android 11上,因为那是下一个主要的Android版本。第一个Android 10测试版于今年3月上线,所以预计将在2020年3月看到Android 11测试版,然后在2020年8月的某个时候稳定发布。小米和三星的手机预计将支持8K的视频录制,这一变化是受欢迎的——尽管早该如此。