Android sdk cut/trim видеофайл
Есть ли способ разрезать видео (mp4 или 3gp) на Android, как использовать только последние 5 секунд фильма... на iphone это возможно с помощью AVAssetExportSession, но на Android я не нашел ничего похожего, возможно, некоторые ссылки на библиотеку ffmpeg, которая кажется сложной. Есть ли более простой способ сделать это?
Ответы
Ответ 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]()