1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/CarGuo-GSYVideoPlayer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Поддерживает IJKPlayer, Media3(EXOPlayer2), MediaPlayer, AliPlayer, что позволяет реализовать многофункциональный видео-плеер. (Пожалуйста, внимательно прочтите нижеуказанные инструкции; большинство вопросов можно найти в ответах ниже).

Версия для HarmonyOS openharmony-tpc/GSYVideoPlayer> ## Если клонирование происходит слишком медленно или изображения недоступны, попробуйте синхронизировать с указанных ниже адресов

  • 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 Другие возможности | При переходе между фоновым и передним планом при паузах — черный экран не появляется; поддержка различных уровней четкости; плавное переключение; блокировка/разблокировка функции клика для полного экрана; просмотр прогресса в малом окне (тестовый режим).

Исправлено:

  • "Yöncü" заменено на "Адаптация".
  • Удалены лишние пробелы после некоторых пунктов.
  • Корректные знаки препинания.
  • Сохранена структура и форматирование исходного текста.Пользовательская настройка | Возможность настроить слой рендера, управления, воспроизведения и кэширования.

Исправлено:

  1. "управление, воспроизведение (управление)" заменено на "управления, воспроизведения".
  2. "информация-С" заменено на "информацию-С". Количество звёзд на GitHub Количество форков на GitHub Количество открытых проблем на GitHub Лицензия проекта

Звезды

Публичный аккаунт WeChat Жэньцзинь Цзюньшую CSDN JianShu
GSYTech Нажмите здесь Нажмите здесь Нажмите здесь Нажмите здесь

--------------Ссылка на скачивание DEMO APK---------------

Одна, использование зависимостей

[--- Информация о версиях --- ](https://github.com/ Yöntem 2 Bağımlılıklar Nedeniyle, Geçici Olarak İsmi Değiştirildi

Первый, добавьте следующее в build.gradle проекта:

allprojects {
    repositories {
		...
        maven { url 'https://jitpack.io' }
        maven { url "https://maven.aliyun.com/repository/public" }
    }
}

1, Jitpack метод включения

⚠️Из-за причин, связанных с способом 2 зависимости, имя пути зависимости jitpack временно изменено

Первый, добавьте следующее в build.gradle проекта:

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'

B. Поддержка других форматов протоколов (MPEG, RTSP, CONCAT, CRYPTO)

А и Б поддерживают стандартные версии с поддержкой кодеков H.263/H.264/H.265. При использовании MPEG могут возникнуть проблемы со звуком без видео.

В. Введение SO-библиотек для поддержки MPEG и дополнительных протоколов, но размер SO-библиотек увеличивается.

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'

Б. Добавление Java и необходимых 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-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'

В. Поддержка других форматов протоколов (mpeg, rtsp, concat, crypto)

А и Б поддерживают 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;

/**

  • Установка пользовательского соотношения сторон экрана
  • @param screenScaleRatio соотношение высоты и ширины, например 16:9 */ public static void setScreenScaleRatio(float screenScaleRatio);

// Переключение типа рендера 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)**



![Структурная схема](./img/StructureChart2.jpg)

## 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

Перед тем как создать новую задачу, проверьте документацию выше.

Описание проблемы:

  1. Укажите демо и страницу, где возникла проблема.
  2. Опишите шаги для воспроизведения проблемы.
  3. Приложите url видео, скриншоты.
  4. Укажите модель устройства и версию Android.

-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://ooo.0o0.ooo/2017/06/15/5941f343a39f5.png)

---

### График изменения количества звёзд
[![График изменения количества звёзд](https://api.star-history.com/svg?repos=CarGuo/GSYVideoPlayer&type=Date)](https://star-history.com/#CarGuo/GSYVideoPlayer&Date)

---

### Уведомление
Открытый проект предназначен для обмена опытом и обучения, поэтому техническая поддержка и бизнес-сотрудничество не предоставляются. Это чисто благотворительный и интересный открытый проект.

---

### Лицензия

Для получения информации о лицензиях обратитесь к IJKPlayer и AndroidVideoCache. Проект был создан на основе jiecao, но со временем полностью перестроен. Иногда можно заметить отсылки к jiaozi в названиях переменных и методов, однако это уже новый проект.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Видеоплеер (IJKplayer, ExoPlayer, MediaPlayer) с поддержкой HTTPS, поддерживает субтитры, фильтры, водяные знаки, GIF-снимки экрана, заставки, промежуточные рекламные вставки, одновременное воспроизведение нескольких видео, базовое перетаскивание, регулировку звука и яркости, буферизацию во время воспроизведения, вращение видео (90, 270 градусов... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/CarGuo-GSYVideoPlayer.git
git@api.gitlife.ru:oschina-mirror/CarGuo-GSYVideoPlayer.git
oschina-mirror
CarGuo-GSYVideoPlayer
CarGuo-GSYVideoPlayer
master