Влоги о путешествиях и жизни популярны среди пользователей приложений: Эти видео рассказывают, охватывая все самые привлекательные моменты путешествия или дня. Чтобы создать такое видео, сначала нужно приложить немало усилий по редактированию, чтобы вырезать из исходного видео банальные и бессмысленные фрагменты, что раньше было уделом профессионалов видеомонтажа.
Теперь это уже не так. Теперь у нас есть множество интеллектуальных мобильных приложений, которые помогут нам автоматически извлечь основные моменты из видео, чтобы мы могли больше сосредоточиться на том, чтобы придать видео пикантности, например, добавив спецэффекты. Я решил использовать возможность выделения основных моментов из Video Editor Kit для создания своего собственного редактора влогов.
Как это работает
Эта функция оценивает, насколько привлекательны кадры видео, а затем выделяет наиболее подходящие. Для этого, как утверждается, она учитывает свойства видео, которые больше всего волнуют пользователей, — вывод, сделанный на основе опроса и оценки опыта пользователей. Исходя из этого, выделенная возможность разрабатывает комплексную схему оценки кадров, которая охватывает различные аспекты. Например:
Оценка эстетики. Этот аспект представляет собой набор данных, построенный на композиции, освещении, цвете и многом другом, что является основной частью возможности.
Теги и выражения лица. Они представляют собой кадры, которые обнаружены и, вероятно, будут извлечены возможностью выделения, например, кадры, содержащие людей, животных и смех.
Качество кадра и режим движения камеры. Функция отбрасывает низкокачественные кадры, размытые, расфокусированные, переэкспонированные или дрожащие, чтобы такие кадры не повлияли на качество готового видео. Удивительно, но, несмотря на все это, функция выделения способна завершить процесс извлечения всего за 2 секунды.
Посмотрите сами, как готовое видео, полученное с помощью функции выделения, сравнивается с исходным видео.
Технология подложки
Возможность выделения выделяется из толпы благодаря использованию моделей и схемы оценки кадров, которые итеративно оптимизируются. Технически и конкретно говоря:
Возможность использует AMediaCodec для аппаратного декодирования и Open Graphics Library (OpenGL) для рендеринга кадров и автоматической настройки размеров кадра в соответствии с размерами экрана. Алгоритм возможности использует несколько нейросетевых моделей. Таким образом, возможность проверяет модель устройства, на котором она работает, а затем автоматически выбирает, на каком устройстве работать: NPU, CPU или GPU. Следовательно, возможности обеспечивают более высокую производительность.
Чтобы быстрее получить результат извлечения, возможность выделения использует двухэтапный алгоритм от разреженной выборки до плотной выборки, проверяет, как контент распределяется между многочисленными видео, и использует буфер кадров. Все это способствует повышению эффективности определения наиболее привлекательных видеокадров. Для обеспечения высокой производительности алгоритма, в возможности используется планирование пула потоков и модель производитель-потребитель, чтобы гарантировать, что видеодекодер и модели могут работать одновременно.
На этапе разреженной выборки возможность декодирует и обрабатывает несколько (до 15) ключевых кадров в видео. Интервал между ключевыми кадрами составляет не менее 2 секунд. На этапе плотной выборки алгоритм выбирает лучший ключевой кадр, а затем извлекает кадры до и после него для дальнейшего анализа выделенной части видео.
Результат извлечения тесно связан с положением ключевого кадра. Результат обработки функции выделения не будет идеальным, если точки выборки недостаточно плотные, например, потому что в видео недостаточно ключевых кадров или его продолжительность слишком велика (более 1 минуты). Для обеспечения оптимальной производительности рекомендуется, чтобы продолжительность входного видео была менее 60 секунд.
Теперь перейдем к тому, как можно интегрировать эту возможность.
Процесс интеграции
Подготовка
Прежде чем переходить к следующей части, выполните необходимые подготовительные действия. Необходимые шаги включают:
i. Настройте информацию о приложении в AppGallery Connect.
ii. Интегрируйте SDK HMS Core.
iii. Настройте скрипты обфускации.
iv. Объявите необходимые разрешения.
Настройка проекта редактирования видео
i. Настройте информацию аутентификации приложения, используя либо маркер доступа, либо ключ API.
- Метод 1: Вызовите setAccessToken для установки маркера доступа, который требуется только один раз при запуске приложения.
MediaApplication.getInstance().setAccessToken("your access token");
- Метод 2: Вызовите setApiKey, чтобы установить ключ API, который требуется только один раз при запуске приложения.
MediaApplication.getInstance().setApiKey("your ApiKey");
ii. Установите идентификатор лицензии.
Этот идентификатор используется для управления квотами использования Video Editor Kit и должен быть уникальным.
MediaApplication.getInstance().setLicenseId("License ID");
- Инициализация среды выполнения HuaweiVideoEditor.
При создании проекта видеомонтажа сначала нужно создать экземпляр HuaweiVideoEditor и инициализировать его среду выполнения. При выходе из проекта экземпляр должен быть освобожден.
- Создайте экземпляр HuaweiVideoEditor.
HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext());
- Определите расположение области предварительного просмотра.
Такая область рендерит видеоизображения, и это реализовано с помощью SurfaceView в SDK фундаментальных возможностей. Прежде чем область будет создана, необходимо задать ее макет.
<LinearLayout
android:id="@+id/video_content_layout"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/video_edit_main_bg_color"
android:gravity="center"
android:orientation="vertical" />
// Specify a preview area.
LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout);
// Design the layout of the area.
editor.setDisplay(mSdkPreviewContainer);
- Инициализируйте среду выполнения. Если проверка лицензии не удалась, будет выброшен LicenseException.
После создания экземпляра HuaweiVideoEditor он не будет использовать системные ресурсы, и нам необходимо вручную установить время инициализации среды выполнения. Затем SDK фундаментальных возможностей внутренне создаст необходимые потоки и таймеры.
try {
editor.initEnvironment();
} catch (LicenseException error) {
SmartLog.e(TAG, "initEnvironment failed: " + error.getErrorMsg());
finish();
return;
}
Интеграция возможности выделения
// Create an object that will be processed by the highlight capability.
HVEVideoSelection hveVideoSelection = new HVEVideoSelection();
// Initialize the engine of the highlight capability.
hveVideoSelection.initVideoSelectionEngine(new HVEAIInitialCallback() {
@Override
public void onProgress(int progress) {
// Callback when the initialization progress is received.
}
@Override
public void onSuccess() {
// Callback when the initialization is successful.
}
@Override
public void onError(int errorCode, String errorMessage) {
// Callback when the initialization failed.
}
});
// After the initialization is successful, extract the highlighted video. filePath indicates the video file path, and duration indicates the desired duration for the highlighted video.
hveVideoSelection.getHighLight(filePath, duration, new HVEVideoSelectionCallback() {
@Override
public void onResult(long start) {
// The highlighted video is successfully extracted.
}
});
// Release the highlight engine.
hveVideoSelection.releaseVideoSelectionEngine();
Заключение
С момента своего появления влог играет важную роль в эпоху «мы-медиа». В прошлом лишь немногие могли создавать влоги, потому что процесс выделения наиболее интересной части из исходного видео мог быть очень сложным.
Благодаря технологии умных мобильных приложений теперь даже любители видеомонтажа могут создавать влоги, потому что большая часть процесса может быть выполнена автоматически приложением с функцией выделения видео.
Функция выделения из Video Editor Kit является одной из таких функций. Эта функция предоставляет набор функций для достижения невероятных результатов, таких как AMediaCodec, OpenGL, нейронные сети, двухэтапный алгоритм (от разреженной до плотной выборки) и многое другое. Эта возможность может помочь создать экстрактор выделенного видео или встроить функцию извлечения выделенного видео в приложение.