[Swift] AVPlayer, 비디오 사이즈 재설정
안녕하세요 정말 오랜만에.. 블로그 포스팅을 하네요 ㅋㅋㅋ 일을 시작하게 되면서 블로그에 시간을 쓰기가 어렵네요.. 😥 사실 상 제가 블로그를 운영하는 목적이 기술을 공유한다는 느낌보단 습득한 지식에 대한 기록이 더 크다고 생각해요.
노션으로 기록을 계속 하고 있었지만, 다급하게 링크만 넣는 경우도 많아서 확실한 정리가 필요하다고 생각해요 누군가가 제 블로그를 보고 삽질을 멈추길 기도합니다.. ㅋㅋㅋ
AVPlayer 비디오 사이즈
이게 정말 난감한 상황이에요.. 저는 그냥 player 재생만하면 view 사이즈에 맞게 알아서 맞춰서 재생될 줄 알았는데, 역시나 아니죠…
AVPlayLayer에서 videoGravity를 설정해줘야 view frame에 맞춰서 비디오가 재생됩니다.
참고 url
videoGravity 3가지 속성
videoGravity에는 3가지 속성이 있어요
- static let resize: AVLayerVideoGravity
- The video should be stretched to fill the layer’s bounds.
- static let resizeAspect: AVLayerVideoGravity
- The player should preserve the video’s aspect ratio and fit the video within the layer’s bounds.
- static let resizeAspectFill: AVLayerVideoGravity
- The player should preserve the video’s aspect ratio and fill the layer’s bounds.
이렇게 resize, resizeAspect, resizeAspectFill 입니다. 음.. 사실 이게 이미지 한번이라도 넣어보신분들이면 대충 어떤건지 아실거라고 생각이 듭니다..
그래도 한 번 영어를 해석해보자면, resize는 layer bound에 꽉차게 설정되는 거고, resizeAspect는 비디오의 비율을 유지시키고 layer bound에 맞게(fit) 설정, 마지막으로 resizeAspectFill은 비디오의 비율은 지키지만 layer bound에 꽉차게 설정합니다.
표현이 조금 아쉬우신 분들은 한 번 3가지 전부 바꿔가면서 빌드해보세요 ㅋㅋㅋ 가장 좋은 방법입니다. 물론 빌드 시간이 오래걸리면 좀 손해겠지만요.. ㅎㅎ
코드
코드는 아래와 같습니다. 음.. 저는 UIView를 상속받은 custom class를 만들어서 적용을 했습니다.
이 방식은 참고 url 걸어둔 것을 확인하시면 됩니다. 간단하니까 걱정하지말아주세요.
self.AVPlayerView.player = AVPlayer(url: url)
self.AVPlayerView.playerLayer.videoGravity = .resize
부디 제 블로그를 보고 해결하셨으면 좋겠습니다. 감사합니다!