微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取视频元数据,如何检测视频是从前置摄像头还是后置摄像头拍摄的天气

如何解决获取视频元数据,如何检测视频是从前置摄像头还是后置摄像头拍摄的天气

我想知道视频是从前置摄像头还是后置摄像头拍摄的。由于 info 返回 nil。

let asset: PHAsset! 
 let manager = PHImageManager.default()
    if asset.mediaType == .video {
      let options: PHVideoRequestOptions = PHVideoRequestOptions()
      options.version = .original
      options.isNetworkAccessAllowed = true
      manager.requestAVAsset(forVideo: asset,options: options) { (asset,audiomix,info) in
}

解决方法

令人惊讶的是,您可以将 PHImageManager.requestImageDataAndOrientation 用于 VIDEO 资产。

Xcode 12.5
iPhone SE 2020 (iOS 14.6)

观察

let imageManager = PHImageManager.default()
imageManager.requestImageDataAndOrientation(for: videoPHAsset,options: nil) { (data,string,orientation,info) in
    if let data = data,let ciImage = CIImage(data: data) {
        print(ciImage.properties)
    }
}

ciImage.properties 序列化为 JSON 后,得到以下结果。

1.视频(后置摄像头)
{"ColorModel":"RGB","PixelHeight":1920,"{Exif}":{"ColorSpace":1,"PixelXDimension":1080,"ExifVersion":[2,2,1],"FlashPixVersion":[1,0],"PixelYDimension":1920,"SceneCaptureType":0,"ComponentsConfiguration":[1,3,0]},"ProfileName":"HDTV","DPIHeight":72,"PixelWidth":1080,"{TIFF}":{"YResolution":72,"ResolutionUnit":2,"XResolution":72},"{JFIF}":{"DensityUnit":0,"YDensity":72,"JFIFVersion":[1,"XDensity":72},"Depth":8,"DPIWidth":72}
2.视频(前置摄像头)
{"Depth":8,"PixelHeight":1334,"ProfileName":"sRGB IEC61966-2.1","PixelWidth":750,"ColorModel":"RGB","DPIWidth":72,"PixelXDimension":750,"PixelYDimension":1334,0]}}
3.截图
{"ColorModel":"RGB","{Exif}":{"PixelXDimension":750,"DateTimeOriginal":"2021:01:21 14:25:56","UserComment":"Screenshot"},"{PNG}":{"InterlaceType":0},"HasAlpha":true,"Depth":16,"{TIFF}":{"Orientation":1},"ProfileName":"Display P3","Orientation":1}
4.照片(有大量信息和 JSON 序列化崩溃,所以我只提取了“{Exif}”部分)
{"ExifVersion":[2,"Flash":24,"LensModel":"iPhone SE (2nd generation) back camera 3.99mm f\\/1.8","OffsetTimeDigitized":"+05:30","SubsecTimeOriginal":"630","LensSpecification":[3.990000009536743,3.990000009536743,1.7999999523162842,1.7999999523162842],"ExposureMode":0,"CompositeImage":2,"LensMake":"Apple","FNumber":1.8,"OffsetTimeOriginal":"+05:30","PixelYDimension":3024,"ApertureValue":1.6959938128383605,"ExposureBiasValue":0,"MeteringMode":5,"ISOSpeedRatings":[400],"ShutterSpeedValue":4.6443251405083465,"FocalLength":3.99,"DateTimeOriginal":"2021:01:21 20:47:05","SceneType":1,"ColorSpace":65535,"SubjectArea":[2013,1511,2217,1330],"PixelXDimension":4032,"FocalLenIn35mmFilm":28,"SubsecTimeDigitized":"630","OffsetTime":"+05:30","SensingMethod":2,"BrightnessValue":0.06030004492448258,"DateTimeDigitized":"2021:01:21 20:47:05","WhiteBalance":0,"ExposureTime":0.04,"ExposureProgram":2}

视频"ExifVersion":[2,1],而照片"ExifVersion":[2,1]。视频的 exif 根本不提供有关相机的任何有用信息 - 而照片的 exif 提供。所有视频和照片都是在同一部手机上拍摄的。

在这一点上,如果这些信息甚至被编码到视频帧中,仍然一无所知。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。