ilyaPlotkin

На Пикабу
в топе авторов на 88 месте
6009 рейтинг 10 подписчиков 10 подписок 26 постов 4 в горячем
9

Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 2

Снова приветствую всех!

Кто не в курсе, первая часть здесь:
Ссылка на пост

Продолжаем! В этом посте разберем ленту видео.

📌 Технологии

  • ViewPager2 — для прокрутки видео

  • ExoPlayer — плеер (читал, что TikTok использует тот же)

🔄 Загрузка видео

Первое, с чем столкнулся — небольшая задержка после авторизации, пока загружается первое видео. Но когда оно загрузилось, можно спокойно листать, ведь параллельно идет динамическая загрузка следующих роликов.

Скорость загрузки зависит от мощности телефона:
📱 Если устройство тянет — загружается сразу 8 видео.
📱 Если слабее — 2, 4 или 6.

Но нужно решить проблему первой загрузки.

🚀 Решение: предзагрузка видео

При запуске приложения в фоне стартует Worker, который загружает 10 видео и сохраняет их в памяти.
👉 Итог: после регистрации видео появляется сразу, без задержек.

Дальше при пролистывании ленты подгружаются новые ролики, но на устройстве в среднем всегда хранится 10 видео.
Worker запускается при каждом входе в приложение, но если нужное количество видео уже есть, загрузка не происходит.

📂 Какие видео загружаются?

Когда пользователь загружает видео и оно проходит модерацию, в PostgreSQL прописывается его путь и параметры.

Есть лента "последних" видео.
📌 Проблема: если в БД хранить только UUID, при большом количестве записей они начинают загружаться в случайном порядке.
📌 Решение: сортировка по времени создания и изменения.

Сейчас пользователи получают всю ленту последних видео (их пока не так много), но потом ограничу, например, 10 000 последних видео.

🔄 Как сделать так, чтобы видео не повторялись?

На сервере пользователь получает список видео, а телефон загружает их по порядку.

Но важно, чтобы при каждом открытии ленты не показывались одни и те же видео.

📌 Решение:
На устройстве есть локальная база данных, где записываются просмотренные видео.
🔹 Они просто не загружаются повторно.
🔹 В ленту подставляются только новые видео.
📌 После просмотра видео удаляется «сборщиком мусора».

🎥 Лента длинных видео

Работает по другому принципу:
🔹 Сначала загружается GIF-превью.
🔹 При нажатии на него открывается плеер и подгружает видео с сервера (кэшируется в приложении).

🚀 Дальнейшие планы

Добавлю:
Рекомендации
Подписки
✅ И другие фичи

💻 Производительность

На предыдущей работе тестировал ленту на нормальном сервере — работало отлично.
Сейчас у меня медленный сервер, загрузка видео очень долгая (аренда — 1000 рублей/мес).

📹 Демонстрация

Попробую прикрепить видео с работой ленты и переключением на длинные ролики.

Записываю одним телефоном другой телефон — да, это выглядит странно 😅.
Но раньше, когда записывал экран, мне говорили:
"Это просто анимация, покажите вживую!"
Так что теперь записываю по-старинке 😆.

Как видно, загруженные пользователем видео отображаются в профиле.

Видео с машинками длится более 1 минуты, поэтому оно попало в категорию "Видео" (для длинных роликов).

Буду рад фидбэку!

Показать полностью 1
6

Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 1

Привет всем, кто читает! Пишу здесь впервые, и готов принять справедливую критику за ошибки. Но давайте не об этом. Немного вводной информации: я разработчик программного обеспечения, работаю с Java/Kotlin, занимаюсь андроид-разработкой. В настоящее время работаю над своим инди-проектом. Честно говоря, не думаю, что он «выстрелит», скорее это будет элемент портфолио. На написание этого поста меня подвиг один знакомый — заядлый пикабушник.

Теперь, собственно, о проекте. Это приложение для коротких видео, по аналогии с TikTok, шортсами и тому подобным. Думаю, из названия вы уже поняли, о чём речь. Сервер уже неплохо работает: реализована авторизация через SMS, при входе пользователю генерируется JWT-токен, и он авторизуется в приложении. Также есть загрузка видео в ленту. Если длина видео превышает минуту — оно попадает в ленту длинных видео. Реализована отправка сообщений внутри приложения, поиск пользователей и редактирование профиля.

Сразу хочу отметить важный момент: в сети есть фреймворк для создания подобных приложений, нечто вроде конструктора. Но хочу сразу развеять сомнения — это не тот фреймворк. Я пишу всё сам, это мой собственный код. Просто подозреваю, что те, кто знаком с такими фреймворками, сразу напишут, что я использую готовое решение.

Внизу покажу скриншоты приложения. Правда, не судите строго — пока на них пусто.

Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 1 Программирование, IT, Программист, Интернет, Длиннопост

Окно регистрации/авторизации. Добавил 4 страны, Россия, Беларусь, Казахстан, Узбекистан. Логотип помог нарисовать чатГпт. На это роль чата закончилась😇

Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 1 Программирование, IT, Программист, Интернет, Длиннопост

Введите описание к изображению (не обязательно)

Это скрин главной ленты, на данный момент видео в ленте нет, я их периодически после проверки удаляю, сверху две клавиши - Shorts и Видео - переключение между длинными и короткими видео,

Такую штуку реализовал: когда идет загрузка видео на сервер, создается гиф из первых 5 секунд по 10 кадров в секунду, эта гифка используется как превью на длинных видео.

Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 1 Программирование, IT, Программист, Интернет, Длиннопост
Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 1 Программирование, IT, Программист, Интернет, Длиннопост

Пока вот так. Ожидайте APK файл ориентировочно завтра или послезавтра — сейчас нужно немного «помучать» сервер, оплатить SMS и еще настроить пару вещей.

Прошу прощения, что сразу не могу предоставить APK.

Не уверен, нужно ли сюда выкладывать код и будут ли его вообще смотреть. Если кто-то подскажет, буду рад.

Всем спасибо за внимание!

Показать полностью 4
Отличная работа, все прочитано!