비디오를 빠르게 로딩하여 리스트업하기 - 틱톡

틱톡과 비슷한서비스를 만들고 있습니다.
제가 구현하고 싶은 것은 틱톡처럼 영상을 빠르게 로딩하여 리스트업하는 것입니다.

지금은 유저가 별로 없기에, 서버단에 대한것은 고려하지 않고있습니다.
그렇기에 클라이언트단에서 영상을 빠르게 로딩하여 리스트업하는 방법을 강구하고있습니다.

제가 여태껏 한 것들에 대해서 말씀드리겠습니다.

  1. “recyclerlistview” 사용하기
    -수십 수백개의 영상을 리스트업하면 디바이스에 상당한 무리가 가더라구요… 그래서 recyclerlistview를 사용하였습니다.

  2. 스크롤을 감지하여 화면 안에 들어오는 영상만 재생하고, 그렇지 않은 영상은 rate를 0으로 맞춤.
    -1번과 같은 이유입니다.

  3. 영상을 먼저 리스트업하지않고 캐시에 저장한다. 그 후 저장이 완료되었을 때 비로소 영상을 재생하기.
    -이렇게 하면 스크롤 도중 영상이 끊기는 오류가 없더라구요. 영상을 두번째 볼때 캐시에서 가져오기때문에 굉장히 빠르기도하구요

여기서 문제점은 3번입니다. 영상을 모두 캐시에 다운로드 후 재생하려니, 첫 로딩시간이 너무 길게만 느껴지네요.
이런 문제점을 해결하고자 영상을 3개씩 저장하고, 저장된 영상을 유저가 볼때 뒷단에서 영상을 다운로드하였습니다.
하지만 그래도 느리네요. 영상 하나의 크기가 10MB도 넘지 않는데, 가끔 캐시에 영상을 저장하는 속도가 엄청 길때도 있습니다.

영상을 빠르게 로딩 후 리스트업 하고 싶은데 어떻게 해야 할까요?

전 회사가 이런 기술을 개발하는 회사였는데, 결론부터 말하자면 클라이언트 단에서 그 모든 기능을 유연하게 재생시키는 것은 힘듭니다.

그냥 mp4 파일로 서버에 저장을 해두고 불러오는 방식은 느립니다. 긴 동영상 같은 경우엔 몇초씩 chunk 로 비디오를 불러오는 HLS 통신을 사용하여야 유연합니다.

그리고 틱톡같은 서비스 자체는 영상을 다루는 기술이 기본적으로 갖추어져 있습니다(mp4로 그냥 하는 것 같더군요). 화질을 거의 안떨어뜨리고 동영상을 압축해서 서버에 저장해둡니다.

1 Like