Подтвердить что ты не робот

Android sdk cut/trim видеофайл

Есть ли способ разрезать видео (mp4 или 3gp) на Android, как использовать только последние 5 секунд фильма... на iphone это возможно с помощью AVAssetExportSession, но на Android я не нашел ничего похожего, возможно, некоторые ссылки на библиотеку ffmpeg, которая кажется сложной. Есть ли более простой способ сделать это?

4b9b3361

Ответ 1

Вы можете сделать это с помощью моей mp4parser библиотеки. Взгляните на ShortenExample, он делает именно то, что предлагает название. Поскольку библиотека не может перекодировать видео, она может разрезать видео только на I-кадры. Таким образом, моменты времени, когда вы можете сделать разрез, довольно грубы.

В Android 4.1 вы можете получить доступ к аппаратным кодекам через API MediaCodec, который может быть вариантом (но пока я еще не видел его)

Ответ 2

попробуйте это

Intent trimVideoIntent = new Intent("com.android.camera.action.TRIM");

// The key for the extra has been discovered from com.android.gallery3d.app.PhotoPage.KEY_MEDIA_ITEM_PATH
trimVideoIntent.putExtra("media-item-path",FilePath);
trimVideoIntent.setData(videoUri);

// Check if the device can handle the Intent
List<ResolveInfo> list = getPackageManager().queryIntentActivities(trimVideoIntent, 0);
if (null != list && list.size() > 0) {
    startActivity(trimVideoIntent); // Fires TrimVideo activity into being active
}else {
    Toast.makeText(this, "not supported",Toast.LENGTH_SHORT).show();
}

его работа над установленными пакетами Gallery2

Ответ 3

Мы можем вырезать видео, используя ffmpeg в Android.

Для интеграции FFmpeg в android мы можем использовать предварительно скомпилированные библиотеки, такие как ffmpeg-android.

Чтобы вырезать видео, мы можем использовать ниже команду -

String[] complexCommand = {"-ss", "" + startMs / 1000, "-y", "-i", inputFileAbsolutePath, "-t", "" + (endMs - startMs) / 1000, "-s", "320x240", "-r", "15", "-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", outputFileAbsolutePath};

Здесь

-ss

ищет позицию

-y

Перезаписать выходные файлы без запроса.

-i

ffmpeg читает с произвольного количества входных "файлов", указанных опцией -i

-t

ограничить продолжительность чтения данных из входного файла

-s

размер видеовыхода

-r

Установите частоту кадров

-vcodec

Установите видеокодек.

-b: v

Установите битрейт видео

-b: а

Установите битрейт аудио

-ac

Установите количество аудиоканалов.

-ar

устанавливает частоту дискретизации для аудиопотоков, если кодируется

startMs

время начала видео в миллисекундах, где вы хотите вырезать

endMs

время окончания видео в миллисекундах, до которого вы хотите вырезать

Я создал образец проекта android для редактирования видео с помощью FFMpeg, который включает в себя резку видео. Проверьте это -

https://github.com/bhuvnesh123/FFmpeg-Video-Editor-Android

и его учебник в

https://androidlearnersite.wordpress.com/2017/03/17/ffmpeg-video-editor/

Ответ 4

Вы можете попробовать INDE Media для мобильных устройств - https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials

У него есть функция перекодирования\ремуксирования как класс MediaComposer и возможность выбора сегментов для приведенных файлов. Поскольку он использует API MediaCodec внутри, он очень дружелюбен к батарее и работает как можно быстрее

enter image description here