Got this code:

videoSize = [[AVPlayerItem playerItemWithAsset:asset] presentationSize]; 

// nslogs -> height: 000 width 000

And this deprecated:

videoSize = [asset naturalSize];

// nslogs -> height: 360 width 480

Why is this happening? I don't get it.

有帮助吗?

解决方案

Solved:

NSArray* allVideoTracks = [movieAsset tracksWithMediaType:AVMediaTypeVideo];
if ([allVideoTracks count] > 0) {
AVAssetTrack* track = [[movieAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0];
CGSize size = [track naturalSize];
}

this made my day, hope it works for someone else...

其他提示

  1. The presentationSize in AVPlayerItem may return a value of CGSizeZero when the player item is not ready to paly.doc
  2. The naturalSize in AVAsset is depressed. doc
  3. Just like your code, it is recommended to use naturalSize and preferredTransform in AVAssetTrack.
CGSize size = [[[movieAsset tracksWithMediaType:AVMediaTypeVideo] firstObject] naturalSize];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top