Ответ
Да, работал с различными плеерами, включая ExoPlayer и MediaPlayer.
ExoPlayer предпочитаю за гибкость, поддержку HLS, DASH, адаптивного стриминга и кастомизацию UI. Пример инициализации:
val player = ExoPlayer.Builder(context).build()
player.setMediaItem(MediaItem.fromUri(videoUrl))
player.prepare()
player.play()
MediaPlayer использовал для простых задач, но он менее гибкий.
Также сталкивался с интеграцией YouTube Player API и настройкой кеширования для офлайн-воспроизведения.
Ответ 18+ 🔞
А, ну это ж моя тема, ебать мои старые костыли! Работал, конечно, со всеми этими штуками — и с ExoPlayer, и с классическим MediaPlayer.
ExoPlayer — это вообще красавчик, ёпта. Его за гибкость люблю, прям хитрая жопа. Поддержка там HLS, DASH, адаптивного стриминга — всё как у взрослых. И интерфейс кастомизировать можно до полного пиздеца, хоть мартышкой сделай. Вот смотри, как просто его поднять:
val player = ExoPlayer.Builder(context).build()
player.setMediaItem(MediaItem.fromUri(videoUrl))
player.prepare()
player.play()
А MediaPlayer... Ну, это как дедовский метод. Для простых задач — сойдёт, типа включить и выключить. Но как только захочешь что-то посерьёзнее — сразу чувствуешь, что он, блядь, с винтом. Гибкости — ноль, доверия — ебать ноль. Как будто на дворе 2012-й год.
Ну и по мелочи всякой: YouTube Player API пихал, кеширование для офлайна настраивал, чтобы видео грузились, даже когда интернет накрылся медным тазом. В общем, было дело.