为了展示产品功能,我们可以制作并上传视频。
我们可以通过真机录制视频,也可以通过模拟器录制。真机录制视频很简单,只需要在设备的控制中心选择录制屏幕就可以了。录完之后,经过剪辑就可以直接上传。
如果你没有特定型号的真机,也可以通过模拟器来录制视频。模拟器录制视频与真机相比,存在一些限制,本文后面会讲到如何解决这些问题。
推荐使用
H.264
格式。虽然它会比ProRes 422
格式的文件大一些。但是这个格式现有的设备都支持硬件加速。因此保存(转码)速度最快,工作效率最高。
模拟器录制视频
录制视频
先打开Xcode,加载项目,然后选择你需要录制视频的模拟器,运行项目。当项目成功在模拟器中运行后,在终端
中输入
xcrun simctl io booted recordVideo record.mov
最后的record.mov
是录制的视频的文件名。它会自动保存在终端
当前的文件夹。录制完成后按ctrl+c
结束录制。
- 如果你开了多个模拟器,那么可能不会录制到你当前使用的模拟器。关闭掉其余的模拟器,仅保留你需要录制的模拟器。
- 模拟器录制的视频不完全与你的操作同步。如果你操作完成就立即结束录制,可能结尾部分会没有路上。因此,建议结尾之后进行额外的操作,比如点击按钮之类的。然后在后期制作中,将多余的部分删除,这样可以保证视频录制的完整性。
- 虽然Xcode可以在Scheme中修改语言,来改变运行时应用的语言,但是这个对于语言的修改,是应用级别的。在录制演示文件时,应该在模拟器/设备中修改系统的语言偏好。这是因为,一些提示,比如通知权限/地理位置权限的提示窗口,是基于系统语言的。如果你只在Xcode中设置,那么就会遇到系统权限提示窗口的语言与应用语言不一致的情况。
转码
根据苹果的规范(见下图),存在两个不同的分辨率,前一个叫原生分辨率
(Native resolutions),后一个叫接受的分辨率
(Accepted resolutions)。前者是模拟器录制视频时得到视频的分辨率,后一个是App Store Connect
上传视频时,所接受的视频分辨率。如果二者分辨率不同,就需要转码。
当真机录制视频时,得到的视频直接就是
接受的分辨率
。通过模拟器录制得到的视频,是原生分辨率
,需要转码。
转码可以通过你喜欢的任意软件进行。我用的是HandBrake。
添加空音轨
转码完成后,如果你直接上传模拟器录制的视频,App Store Connect
会在上传后错误提示:音频不符合规范。原因是模拟器录制的视频,只有视频的部分,没有音频。因此,你需要添加额外的音轨。可以使用FFmpeg
添加空音轨。
FFmpeg
安装brew install ffmpeg
brew link ffmpeg
添加空音轨
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -i video.mov \
-shortest -c:v copy -c:a aac output.mov
video.mov
是源文件,output.mov
是目标文件。
剪辑
剪辑我推荐使用Quicktime Player
。它的保存速度是最快的。
当剪辑完成之后,有时
保存
按钮是灰色的。这时可以直接点击关闭,就会弹出保存对话框。