我有一个应用程序,我想只为前置摄像头拍摄视频.那没问题.但我希望视频拍摄始终处于风景中,即使手机是以人像拍摄的.
我有一个基于Apple发布的AVCamDemo代码的工作实现.借用this tech note中的信息,我可以指定方向.只有一个技巧:当视频帧正确定向时,内容仍然显示为纵向拍摄:
我想知道我是不是刚刚被硬件的物理限制所束缚:图像传感器是这样定向的吗?上面引用的技术说明使本说明:
Important: Setting the orientation on a still image output and movie
file output doesn’t physically rotate the buffers. For the movie file
output, it applies a track transform (matrix) to the video track so
that the movie is rotated on playback, and for the still image output
it inserts exif metadata that image viewers use to rotate the image
properly when viewing later.
但我对该视频的播放表明不然.任何见解或建议将不胜感激!
谢谢,
亚伦.
最佳答案 要回答你的问题,是的,图像传感器就是这样定向的.摄像机是一个约100万像素的“1080p”摄像机,具有固定的方向. 5MP(或4S等8MP)静态相机也有固定方向.镜头本身不旋转也不做任何其他相机镜头,因此镜头本身具有固定的方向.
“但是等等!”,你说,“我用相机应用程序(或API)拍摄的照片会正确旋转.为什么会这样?”这是因为iOS会在拍摄照片时查看手机的方向并将该信息与图片一起存储(作为Exif附件).然而,视频没有被标记 – 并且每个帧都必须单独标记,然后在用户在视频期间旋转手机时该怎么做才会出现问题….
所以,不,你不能要求视频流或静止图像拍摄视频时手机的方向.但是,您可以直接询问手机现在的方向:
UIDeviceOrientation currentOrientation = [UIDevice currentDevice].orientation;
如果您在视频捕获开始时(或从视频输入中获取静止图像时)执行此操作,则可以使用该信息进行自己的播放旋转.