- GitCode: https://gitcode.com/ZuoYueLiang/GSYVideoPlayer
- Gitee: https://gitee.com/CarGuo/GSYVideoPlayer Тип | Функционал --- | --- Кэш | При воспроизведении потока кэширование происходит в реальном времени с использованием AndroidVideoCache; Media3(ExoPlayer) использует SimpleCache. Протоколы | Поддержка протоколов h263\4\5, Https, concat, rtsp, hls, rtmp, crypto, mpeg и других. (Форматы декодирования ijk) Фильтры | Простые фильтры (мозаика, черно-белое, цветовая коррекция, гауссовское размытие, размытие и другие более 20 видов), анимация, водяной знак, многократное воспроизведение видео. Кадры | Первый кадр видео, возможность делать скриншоты кадров видео, создание gif из видео. Воспроизведение | Списковое воспроизведение, последовательное списковое воспроизведение, автоматическое поворачивание экрана при изменении ориентации устройства, свойство rotation видео, быстрое и медленное воспроизведение, скорость загрузки сетевых видео. Отображение | Настройка соотношения сторон: по умолчанию, 16:9, 4:3, заполнение; поворот экрана во время воспроизведения (0, 90, 180, 270); зеркальное отражение. Ядро | **Используются IJKPlayer, Media3(EXOPlayer), MediaPlayer, AliPlayer; возможность использования пользовательского ядра.**Макет | Переключение между макетами для полноэкранного и неполноэкранного режимов; поддержка чистого воспроизведения без управления; функция буллет-тайм; наследование любого пользовательского макета. Воспроизведение | Одиночное воспроизведение, одновременное воспроизведение нескольких источников, автоматическое воспроизведение списка видео при прокрутке, плавное переключение между страницами. Окна | Маленькие окна, воспроизведение малых окон в многооконном режиме (включая рабочий стол). Реклама | Реклама перед началом видео, поддержка пропуска рекламы, вставка рекламы в середине видео. Закадровый текст | Поддержка закладок для внешнего закадрового текста в режиме media3(exo2). Dash | Поддержка Dash в режиме media3(exo2) Stream | Поддержка воспроизведения метаданных Адаптация Yöncü | Поддержка 16K Page Size в ex_so OpenSSL | Текущее использование OpenSSL 1.1.1w для arm64 FFmpeg | Текущее использование FFmpeg 4.1.6 для arm64 FFmpeg | Поддержка G711a(pcm_alaw) в ex_so для arm64 Другие возможности | При переходе между фоновым и передним планом при паузах — черный экран не появляется; поддержка различных уровней четкости; плавное переключение; блокировка/разблокировка функции клика для полного экрана; просмотр прогресса в малом окне (тестовый режим).
Исправлено:
Исправлено:
Публичный аккаунт WeChat | Жэньцзинь | Цзюньшую | CSDN | JianShu |
---|---|---|---|---|
GSYTech | Нажмите здесь | Нажмите здесь | Нажмите здесь | Нажмите здесь |
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
maven { url "https://maven.aliyun.com/repository/public" }
}
}
⚠️Из-за причин, связанных с способом 2 зависимости, имя пути зависимости jitpack временно изменено
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
maven { url "https://maven.aliyun.com/repository/public" }
}
}
```**Вы можете выбрать один из трёх ниже вариантов для добавления в `build.gradle` модуля.**
#### А. Прямое включение
// Полностью включаем
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer:v10.0.0'
#### B. Добавление поддержки Java и необходимых SO-библиотек:
```markdown
### А. Добавьте поддержку Java и те SO-библиотеки, которые вам нужны:
```markdown
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.0.0'
// Поддержка ExoPlayer
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.0.0'
// Поддержка AliPlayer
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-aliplay:v10.0.0'
// Выберите подходящие SO-библиотеки в зависимости от ваших требований
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-arm64:v10.0.0'
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-armv7a:v10.0.0'
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-armv5:v10.0.0'
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-x86:v10.0.0'
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-x64:v10.0.0'
А и Б поддерживают стандартные версии с поддержкой кодеков H.263/H.264/H.265. При использовании MPEG могут возникнуть проблемы со звуком без видео.
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.0.0'
// Поддержка ExoPlayer
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.0.0'
// Поддержка AliPlayer
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-aliplay:v10.0.0'
```// Расширенная поддержка ijk с дополнительными кодеками
implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.0.0'
### 2. Новый способ использования GitHub Packages для зависимостей
**Из-за частого удаления старых пакетов на JitPack, был добавлен новый способ использования GitHub Packages для зависимостей.**
> Однако доступ к GitHub Packages требует токена, что усложняет процесс, но обеспечивает большую стабильность.
```markdown
allprojects {
repositories {
...
maven {
url 'https://maven.pkg.github.com/CarGuo/GSYVideoPlayer'
}
}
}
// Вы также можете использовать свой аккаунт GitHub и токен
// Для удобства здесь предоставлен токен для редко используемого аккаунта
credentials {
// ваше имя пользователя в GitHub
username = 'carsmallguo'
// сгенерированный токен доступа
password = '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'
}
maven {
url "https://maven.aliyun.com/repository/public"
}
Теоретически это можно сделать через аватар в правом верхнем углу — Settings — Developer Settings — Personal access tokens — tokens (classic) — Generate new token (classic) — read:packages Убедитесь, что срок действия выбран как "Постоянный"
Вы можете выбрать одну из трёх следующих опций для добавления в build.gradle
модуль.
// Полная версия
implementation 'com.shuyu:gsyvideoplayer:10.0.0'// Включает ли поддержку AliPlayer
implementation 'com.shuyu:gsyvideoplayer-aliplay:10.0.0'
implementation 'com.shuyu:gsyvideoplayer-java:10.0.0'
// Поддержка ExoPlayer
implementation 'com.shuyu:gsyvideoplayer-exo2:10.0.0'
// Поддержка AliPlayer
implementation 'com.shuyu:gsyvideoplayer-aliplay:10.0.0'
// Поддержка ijk с различными архитектурными so файлами
implementation 'com.shuyu:gsyvideoplayer-armv5:10.0.0'
implementation 'com.shuyu:gsyvideoplayer-armv7a:10.0.0'
implementation 'com.shuyu:gsyvideoplayer-arm64:10.0.0'
implementation 'com.shuyu:gsyvideoplayer-x86:10.0.0'
implementation 'com.shuyu:gsyvideoplayer-x64:10.0.0'
А и Б поддерживают 263/264/265 и т.д., но могут иметь проблемы со звуком при использовании MPEG-кодирования. В включает поддержку MPEG-кодирования и других протоколов, но увеличивает размер SO-файлов.
implementation 'com.shuyu:gsyvideoplayer-java:10.0.0'
// Поддержка ExoPlayer
implementation 'com.shuyu:gsyvideoplayer-exo2:10.0.0'
// Поддержка AliPlayer
implementation 'com.shuyu:gsyvideoplayer-aliplay:10.0.0'
// Расширенная поддержка ijk с дополнительными SO-файлами
implementation 'com.shuyu:gsyvideoplayer-ex_so:10.0.0'
// EXOPlayer, поддерживает больше форматов
PlayerFactory.setPlayManager(Exo2PlayerManager.class);
// Системный проигрыватель
PlayerFactory.setPlayManager(SystemPlayerManager.class);
// Проигрыватель ijk, по умолчанию
PlayerFactory.setPlayManager(IjkPlayerManager.class);
// Проигрыватель AliPlayer, по умолчанию
PlayerFactory.setPlayManager(AliPlayerManager.class);
```#### Конфигурация кэша (подробнее см. ниже)
```markdown
// Кэш EXOPlayer, поддерживает m3u8
CacheFactory.setCacheManager(ExoPlayerCacheManager.class);
// Прокси-кэш, поддерживает все режимы, кроме m3u8
CacheFactory.setCacheManager(ProxyCacheManager.class);
// Переключение режима отображения GSYVideoType setShowType(GSYVideoType.SCREEN_MATCH_FULL); // По умолчанию используется соотношение сторон экрана GSYVideoType SCREEN_TYPE_DEFAULT = 0; // 16:9 GSYVideoType SCREEN_TYPE_16_9 = 1; // 4:3 GSYVideoType SCREEN_TYPE_4_3 = 2; // Полноэкранный режим с выравниванием контента GSYVideoType SCREEN_TYPE_FULL = 4; // Полноэкранный режим с растяжением контента GSYVideoType SCREEN_MATCH_FULL = -4;
/**
// Переключение типа рендера GSYVideoType setRenderType(GSYVideoType.SURFACE); GSYVideoType setRenderType(GSYVideoType.GL_SURFACE); GSYVideoType setRenderType(GSYVideoType.TEXTURE);
// Отключение логов ijk IjkPlayerManager setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT);
// Настройка MediaSource в exoplayer ExoSourceManager setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() { @Override public MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) { // Можно установить пользовательский MediaSource return null; } });
### [--- Дополнительные зависимости можно найти здесь ---](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/DEPENDENCIES.md)
## Второй раздел: Другие рекомендации### * Моя техническая коммьюнити: [Juejin](https://juejin.cn/user/817692379985752/posts)
### * QQ группа, если вам интересно присоединиться (часто болтаем и жалуемся, так как количество участников ограничено, поэтому это просто ежедневное общение): ~~174815284~~ , новая группа: 992451658.
### * [Flutter Github клиент](https://github.com/CarGuo/gsy_github_app_flutter) 、[React Native Github клиент](https://github.com/CarGuo/GSYGithubAPP) 、 [Weex Github клиент](https://github.com/CarGuo/GSYGithubAPPWeex) 、 [Нативный Kotlin Github клиент](https://github.com/CarGuo/GSYGithubAPPKotlin)
### * [RxFFmpeg Android аудио/видео редактор](https://github.com/microshow/RxFFmpeg)
### * [oarplayer RTMP плеер, основанный на MediaCodec и srs-librtmp, не использует ffmpeg](https://github.com/qingkouwei/oarplayer)
### * Версия для HarmonyOS [openharmony-tpc/GSYVideoPlayer](https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/GSYVideoPlayer)
## 3. Документация WikiДокумент | Ссылка
-------- | ---
**Инструкция по использованию**|***[--- Базовая инструкция по использованию, быстрое начало работы](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/USE.md)***
**Рекомендовано прочитать**|***[--- Основные знания о аудио-видео для мобильных разработчиков 1](https://juejin.cn/post/7057132141875822622), [--- Основные знания о аудио-видео для мобильных разработчиков 2](https://mp.weixin.qq.com/s/HjSdmAsHuvixCH_EWdvk3Q)***
**Пояснение проекта**|***[--- Пояснение проекта, включает архитектуру и детали](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/GSYVIDEO_PLAYER_PROJECT_INFO.md)***
Конечная точка API | **[--- Инструкция по использованию, конечные точки API - вход](https://github.com/CarGuo/GSYVideoPlayer/wiki)**
**Сборник вопросов**|***[--- Сборник вопросов - вход (большинство ваших проблем решается здесь)](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/QUESTION.md)***
Формат кодировки | **[--- Объяснение формата конфигурационных файлов IJK SO](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/DECODERS.md)**
Сборка пользовательских SO | **[--- Вход для сборки пользовательских SO IJKPlayer](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/BUILD_SO.md)**
Обновление версий | **[--- Обзор обновлений версий - вход](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/UPDATE_VERSION.md)**
compileSdk слишком высок | --- **[#3514](https://github.com/CarGuo/GSYVideoPlayer/issues/3514)**

## 4. Эффект выполнения
* ### 1. Открытие одного видео (поворот, зеркальное отображение, заполнение)
<img src="./img/11.gif" width="240px" height="426px"/>* ### 2. Список / подробная информация (анимация, поворот, мини-окна)
<div>
<img src="./img/22.gif" width="240px" height="426px"/>
<img src="./img/33.gif" width="240px" height="426px"/>
<img src="./img/44.gif" width="240px" height="426px"/>
</div>
* ### 3. Подпись к видео
<img src="./img/55.gif" width="240px" height="426px"/>
* ### 4. Фильтры и GL-анимация
<img src="./img/09.gif"/>
* ### 6. Размытое видео на фоне
<img src="./img/99.png" width="426px" height="240px"/>
* ### 7. Мини-окно для просмотра прогресса воспроизведения
<img src="./img/07.gif" height="240px"/>
## 5. Последние версии
### v10.0.0 (2024-11-01)
- Обновлено до Media3 1.4.1
- Обновлено до FFMpeg 4.1.6
- Обновлено до OpenSSL 1.1.1w
- Поддержка размера страницы 16K
- Исправлено #3999 & #3649
- Исправлено #4014
- Исправлено #4019
- Исправлено #4023
- Исправлено #4021
- Обновлено до AGP
### v9.0.0-release-jitpack (2024-07-29)
* поддержка размера страницы 16К в ex_so
* обновление media3 до версии 1.4.0
* исправление проблемы #4014
* исправление проблем #3999 и #3649 — установка скорости воспроизведения системного медиаплеера приводит к началу воспроизведения
* исправление проблемы #3972 — неправильное состояние плеера при циклическом воспроизведении с использованием ListGSYVideoPlayer
### Дополнительные версии см.: [Информация о версиях](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/UPDATE_VERSION.md)
## 6. О проблемах Issues
Перед тем как создать новую задачу, проверьте документацию выше.
Описание проблемы:
-keep class com.shuyu.gsyvideoplayer.video.** { ; } -dontwarn com.shuyu.gsyvideoplayer.video.* -keep class com.shuyu.gsyvideoplayer.video.base.** { ; } -dontwarn com.shuyu.gsyvideoplayer.video.base.* -keep class com.shuyu.gsyvideoplayer.utils.** { ; } -dontwarn com.shuyu.gsyvideoplayer.utils.* -keep class com.shuyu.gsyvideoplayer.player.** {;} -dontwarn com.shuyu.gsyvideoplayer.player.** -keep class tv.danmaku.ijk.** { ; } -dontwarn tv.danmaku.ijk.* -keep class androidx.media3.** {;} -keep interface androidx.media3.** {*;}
-keep class com.shuyu.alipay.** {;} -keep interface com.shuyu.alipay.** {;}
-keep public class * extends android.view.View { *** get*(); void set*(***); public (android.content.Context); public (android.content.Context, boolean); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); }
Если вы используете проигрыватель от Alibaba Cloud, обратитесь к его документации (https://help.aliyun.com/document_detail/124711.html?spm=a2c4g.124711.0.0.7fa0125dkwUPoU) и добавьте следующие правила keep:
-keep class com.alivc.{*;} -keep class com.aliyun.{;} -keep class com.cicada.**{;} -dontwarn com.alivc.** -dontwarn com.aliyun.** -dontwarn com.cicada.**
## Внимание
#### [Если клонирование происходит медленно, попробуйте скачать с Gitee](https://gitee.com/CarGuo/GSYVideoPlayer)
При возникновении проблем с настройками или ошибками, сначала просмотрите коллекцию вопросов, демонстрационные примеры и issue.
Постарайтесь минимизировать вопросы типа "почему это работает у других".
Плеер имеет высокую степень кастомизации; подробнее смотрите в демо, читайте исходный код. В данный момент функционал довольно обширен, а демо постоянно обновляется.Новый функционал и структура проекта также находятся в процессе постоянной доработки.
Приветствуем ваши вопросы, спасибо.
---
### Размер зависимостей
Рекомендуется использовать NDK для фильтрации, более подробно см. [пункт 4: Поддержка NDK so](http://www.jianshu.com/p/86e4b336c17d)

---
### График изменения количества звёзд
[](https://star-history.com/#CarGuo/GSYVideoPlayer&Date)
---
### Уведомление
Открытый проект предназначен для обмена опытом и обучения, поэтому техническая поддержка и бизнес-сотрудничество не предоставляются. Это чисто благотворительный и интересный открытый проект.
---
### Лицензия
Для получения информации о лицензиях обратитесь к IJKPlayer и AndroidVideoCache. Проект был создан на основе jiecao, но со временем полностью перестроен. Иногда можно заметить отсылки к jiaozi в названиях переменных и методов, однако это уже новый проект.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )