Данный проект является результатом переноса и разработки на основе открытого проекта qsvideoplayer для HarmonyOS. Проект доступен по адресу: github.
Версия переноса: 2.2.8
Всего около 100 строк кода на Java достаточно для создания собственного проигрывателя. Предоставляется готовый проигрыватель DemoQSVideoView.
Вариант 1: Рекомендуется загрузить исходный код и использовать демонстрационный пример для добавления соответствующих библиотек:
compile project(path: ':qsvideoplayer')
Вариант 2: В файле build.gradle в корневом каталоге проекта добавьте:
mavenCentral()
В модуле build.gralde добавьте:
implementation 'com.gitee.ts_ohos:qsvideoplayer:1.0.0'
API интерфейса QSVideoView:
void setUp(String url, Object... objects);//установка адреса видео
void play();//воспроизведение/инициализация (автоматическое воспроизведение после завершения)
void prePlay();//инициализация (без автоматического воспроизведения)
void pause();//приостановка
void seekTo(int duration);//регулировка позиции воспроизведения
void setPlayListener(PlayListener playListener);//прослушиватель воспроизведения (параметры см. IVideoPlayer)
void addPlayListener(PlayListener playListener);//добавление прослушивателя воспроизведения
void removePlayListener(PlayListener playListener);//удаление прослушивателя воспроизведения
void setAspectRatio(int aspectRatio);//установление соотношения сторон видео (см. IRenderView)
void setDecodeMedia(Class<? extends BaseMedia> claxx);//установление модуля декодирования
void openCache();//открытие кэша
boolean onBackPressed();//выход из полноэкранного режима при нажатии кнопки «Назад»
boolean isPlaying();//проверка воспроизведения
void enterWindowFullscreen();//переход в полноэкранный режим
void quitWindowFullscreen();//выход из полноэкранного режима
boolean enterWindowFloat(FloatParams floatParams);//всплывающее окно (false — нет прав доступа)
void quitWindowFloat();//выход из всплывающего окна
boolean setMute(boolean isMute);//отключение звука (false — не поддерживается)
boolean setSpeed(float rate);//установка скорости воспроизведения (false — не поддерживается)
void release();//освобождение ресурсов
Bitmap getCurrentFrame();//получение текущего кадра
int getPosition();//позиция воспроизведения
int getDuration();//длительность видео
int getVideoWidth();//ширина видео
int getVideoHeight();//высота видео
int getCurrentMode();//текущий режим проигрывателя (полноэкранный, обычный, всплывающий)
int getCurrentState();//текущее состояние проигрывателя (воспроизведение, пауза, завершение...)
Дополнительные методы использования можно найти в демонстрационном примере этого проекта. Ниже приведены основные способы использования:
DemoQSVideoView qsVideoView = (DemoQSVideoView) findViewById(R.id.xxx);
qsVideoView.setUp(url, "这是一一一一一一一一一个标题");
Настройка нескольких разрешений и параметров IJK:
List<IjkMedia.Option> list = new ArrayList<>();
list.add(new IjkMedia.Option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 1));
demoVideoView.setUp(
QSVideo.Build(url).title("这是标清标题").definition("标清").resolution("标清 720P").build(),
QSVideo.Build(url).title("这是高清标题").definition("高清").resolution("高清 1080P").option(list).build());
Установка обложки:
qsVideoView.getCoverImageView().setImageResource(R.mipmap.cover);
Добавление прослушивателя:
qsVideoView.setPlayListener(new PlayListener() {
@Override
public void onStatus(int status) {//состояние проигрывателя
if (status == IVideoPlayer.STATE_AUTO_COMPLETE)
qsVideoView.quitWindowFullscreen();//завершение воспроизведения — выход из полноэкранного режима
}
@Override//полноэкранный/обычный/всплывающий...
public void onMode(int mode) {
}
@Override//события воспроизведения: инициализация завершена/буферизация/ошибка/нажатие...
public void onEvent(int what, Integer... extra) {
}
});
Переход в полноэкранный режим:
0 — горизонтальный экран
1 — вертикальный экран
2 — автоматический выбор горизонтального или вертикального экрана в зависимости от датчика
3 — автоматическое определение горизонтального или вертикального экрана на основе соотношения сторон видео
-1 — ничего не делать
qsVideoView.enterFullMode=3;
qsVideoView.play();
Выход из полноэкранного режима по нажатию кнопки «Назад»:
@Override
public void onBackPressed() {
if (qsVideoView.onBackPressed())
return;
super.onBackPressed();
}
В XML-файле ресурсов layout в файле ресурсов добавьте следующий код: Использование плавающего окна
FloatParams floatParams = new FloatParams(); floatParams.x = 0;//координата x центра всплывающего окна floatParams.y = 0;//координата y центра всплывающего окна floatParams.w = 540;//ширина floatParams.h = 270;//высота floatParams.round = 30;//радиус закругления углов всплывающего окна (требуется SDK_INT >= 21) floatParams.fade = 0.8f;//прозрачность (требуется SDK_INT >= 11) floatParams.canMove = true;//можно ли перемещать floatParams.canCross = false;//можно ли пересекать границы экрана floatParams.systemFloat = true;//TRUE — системное всплывающее окно, требуется разрешение; FALSE — всплывающее окно в интерфейсе
if (!qsVideoView.enterWindowFloat(floatParams)) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startAbility(intent, 0); }
Демонстрация эффекта
Версия и итерация
v1.0.0 — первая отправка проекта.
Информация о версии и лицензии
Apache License Version 2.0, January 2004 http://www.apache.org/licenses
https://gitee.com/ts_ohos/qsvideo-player_hos/blob/master/LICENSE
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )