/HackDay_GestureVideoPlayer

네이버 핵데이 대비 리포지터리

Primary LanguageSwift

HackDay_GestureVideoPlayer

공부하고 정리하자.

데모 영상

Video Label

공부 방법

요구사항(필수)

비디오 리스트뷰

  • 비디오 리스트 제공 (컬렉션뷰)
    • 구현.
  • 비디오 리스트는 네트워크를 통해서 받는다. (URLSession, 또는 Alamofire)
    • AVAssetDownloadURLSession을 사용함.
    • 다운로드가 된 asset의 local path를 UserDefaults에 remoteURL를 key 값으로 저장해 다시 다운로드 받지 않게끔 구현.
  • 비디오 클릭시 바로 플레이어 재생
    • VideoListViewController에서 PlayerViewController에 다운 중인 Asset을 전달해 재생.
    • bufferingState이 waiti

플레이어 (가로모드만 제공)

  • 재생(버튼) / 정지(버튼)
    • 버튼 구현.
  • Seeking(슬라이더) / 10초전(버튼)
    • 구현.
  • 제스쳐
    • 탭: 탭할때 마다 컨트롤뷰 토글
      • Dispatch.main.ayncAfter를 통해 컨트롤 뷰가 나타난 뒤 2초 후에 사라지도록 통해 구현했지만 불안정.
    • 더블 탭
      • 영상 확대 및 원본 비율 토글
    • 좌우 팬: Seeking
      • 구현.
    • 좌측 상하: 화면 밝기
      • 구현.
    • 우측 상하: 볼륨 조절
      • 구현.
    • 컨트롤뷰 잠금

요구사항(선택)

플레이어

  • 메뉴(dummy 데이터로 표시)
    • 화질정보 (고화질, 일반화질, 저화질)
      • preferredPeakBitRate를 제한하여 화질 수정하기.
    • 자막정보 (한국어, 영어, 자막끄기)
      • AVAsset에서 자막 정보 얻어오기 구현 중 어려움.

문제점

  • 컨트롤뷰를 토글 시 애니메이션 간에 엉켜서 제대로 나타나지 않거나 갑자기 나타나는 경우 발생.
  • 자막과 화질 설정을 UITableView을 통해서 하려고 밑에서 나타나게끔 했으나 영상이 재생 중일 경우 바로 닫히는 문제가 존재.
  • 자막을 뿌려주는 것을 구현하지 못함.