小编Geo*_* C.的帖子

如何检测视频文件是以纵向方式录制还是以横向方式录制在iOS中

AlAssetsGroup enumerateAssetsAtIndexes用来列出照片(相机)应用程序中的资产.对于给定的视频资源,我想确定它是以纵向还是横向模式拍摄的.

在下面的代码,资产是一个AlAsset和我已经测试,看看它是否是一个视频资产[asset valueForProperty:ALAssetPropertyType]AlAssetTypeVideo,则:

int orientation = [[asset valueForProperty:ALAssetPropertyOrientation] intValue];
Run Code Online (Sandbox Code Playgroud)

在这种情况下orientation,总是0 ALAssetOrientationUp.也许这是预期的,所有视频都是正确的,但是纵向视频在MPEG-4中表示为90度旋转的景观视频(即所有视频实际上都是风景,如果不是,请尝试使用Mac上的MediaInfo应用程序相信我).

文件中的位置和/或如何在纵向握住手机时访问告诉我实际记录的信息?

考虑到资产的网址,我也尝试了这个:

AVURLAsset *avAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
CGSize size = [avAsset naturalSize];
NSLog(@"size.width = %f size.height = %f", size.width, size.height);
CGAffineTransform txf = [avAsset preferredTransform];
NSLog(@"txf.a = %f txf.b = %f  txf.c = %f  txf.d = %f  txf.tx = %f  txf.ty = %f",
            txf.a, txf.b, txf.c, txf.d, txf.tx, txf.ty);
Run Code Online (Sandbox Code Playgroud)

这总是产生宽度>高度因此对于iPhone 4,宽度= 1280高度= 720并且变换a和d值是1.0,其他是 …

objective-c video-processing video-encoding ios

28
推荐指数
4
解决办法
2万
查看次数