在iOS開(kāi)發(fā)中遇到使用視頻播放器的案例门岔,使用的是別人封裝好的?WMPlayer?這么一個(gè)視頻播放器,他使用的是AVPlayer這個(gè)底層的視頻框架來(lái)搭建的視頻界面,在開(kāi)發(fā)時(shí)會(huì)遇到適配適配內(nèi)容比例的需求,一開(kāi)始沒(méi)注意到視頻被拉伸過(guò)层皱,后來(lái)遇到一個(gè)用豎屏錄制的視頻時(shí)才發(fā)現(xiàn)視頻被拉伸了,于是來(lái)查找相關(guān)的設(shè)置屬性京痢。
最后查找到使用其中一個(gè)叫?videoGravity?的屬性奶甘,默認(rèn)設(shè)置了AVLayerVideoGravityResize,查看該屬性以及相關(guān)的其他屬性值發(fā)現(xiàn)有3種值可以設(shè)置祭椰,
AVLayerVideoGravityResizeAspect
AVLayerVideoGravityResizeAspectFill
AVLayerVideoGravityResize
逐一試用后發(fā)現(xiàn)了其中的一些不同臭家,在這里分享一下,可能我說(shuō)的不太標(biāo)準(zhǔn)方淤,只是個(gè)人的一些理解钉赁。
開(kāi)始把描述放到百度翻譯上去翻譯了一下,
1.Preserve aspect ratio; fit within layer bounds
2.Preserve aspect ratio; fill layer bounds
3.Stretch to fill layer bounds
解釋是
1.保持縱橫比携茂;適合層范圍內(nèi)
2.保持縱橫比你踩;填充層邊界
3.拉伸填充層邊界
再看我分別設(shè)置了?WMPlayer這個(gè)播放器中的3種不同屬性值得結(jié)果圖,
1. wmPlayer.playerLayer.videoGravity?=AVLayerVideoGravityResizeAspect
2.wmPlayer.playerLayer.videoGravity?=?AVLayerVideoGravityResizeAspectFill
3.?wmPlayer.playerLayer.videoGravity?=?AVLayerVideoGravityResize
可以看出
第1種模式AVLayerVideoGravityResizeAspect是按原視頻比例顯示讳苦,是豎屏的就顯示出豎屏的带膜,兩邊留黑;
第2種AVLayerVideoGravityResizeAspectFill是以原比例拉伸視頻鸳谜,直到兩邊屏幕都占滿膝藕,但視頻內(nèi)容有部分就被切割了;
第3種AVLayerVideoGravityResize是拉伸視頻內(nèi)容達(dá)到邊框占滿咐扭,但不按原比例拉伸芭挽,這里明顯可以看出寬度被拉伸了。
原文地址:https://blog.csdn.net/COOL_BEAR_XX/article/details/52816780