屏幕快照 2017-11-10 上午11.03.48.png
以上可以看出,在不知道視頻寬高比的時候吭从,給player一個預設高度朝蜘,如果項目中背景色不是深色的時候,會達不到產(chǎn)品的要求涩金。眾所周知谱醇,蘋果官方提供了三種填充模式:
/**
AVPlayerLayer的videoGravity屬性設置
AVLayerVideoGravityResize, // 非均勻模式。兩個維度完全填充至整個視圖區(qū)域
AVLayerVideoGravityResizeAspect, // 等比例填充步做,直到一個維度到達區(qū)域邊界
AVLayerVideoGravityResizeAspectFill, // 等比例填充副渴,直到填充滿整個視圖區(qū)域,其中一個維度的部分區(qū)域會被裁剪
*/
@property (nonatomic, copy) NSString *videoGravity;
我們一般都默認使用的是AVLayerVideoGravityResizeAspect
,因為使用其他兩種模式會拉伸視頻全度,導致變形煮剧。那么問題來了,想使用AVLayerVideoGravityResizeAspect
,又想不留白轿秧,該怎么處理呢中跌?有種辦法是:取得視頻的寬高比,不預設高度菇篡,根據(jù)視頻頁面所在的寬度和取得視頻的寬高比決定視頻頁面的高度漩符,這樣一來,可以解決留白的問題驱还。
取得視頻寬高比的方法:
//獲取視頻寬高比
- (CGFloat )getVideoScale:(NSURL *)URL{
//獲取視頻尺寸
AVURLAsset *asset = [AVURLAsset assetWithURL:URL];
NSArray *array = asset.tracks;
CGSize videoSize = CGSizeZero;
for (AVAssetTrack *track in array) {
if ([track.mediaType isEqualToString:AVMediaTypeVideo]) {
videoSize = track.naturalSize;
}
}
return videoSize.height/videoSize.width;
}
如此一來嗜暴,我們只需要根據(jù)這個比例來設定高度:
self.playerView.frame =CGRectMake(0,64,ScreenWidth,ScreenWidth*scale);
效果如圖:
屏幕快照 2017-11-10 上午11.43.17.png