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

Android, Java - рендеринг видео с использованием растровых кадров для обратного просмотра видео (Xuggler)

У меня нет видеокадров в ArrayList<Bitmap>. Я обратился к этим фреймам с помощью метода MediaMetadataRetriever.getFrameAtTime() в файле Video (.mp4).

i меняет порядок кадров в ArrayList.  Теперь, используя эту обратную упорядоченную очередь кадров, я хочу отобразить видео, чтобы он менялся (я надеюсь, что я на правильном пути).

После создания этого видео я также хочу сохранить его на SD-карте.

как добиться этого? Или Есть ли какой-либо другой метод для изменения видео в java?

Изменить 1: (*** Использование xuggler *) **

Я попытался использовать xuggler... Я попытался использовать его .jar файл. но он вызывает некоторые ошибки.

[2012-08-18 00:29:16 - xugglertest2] The library 'xuggle-xuggler-5.2.jar' contains native libraries that will not run on the device.
    [2012-08-18 00:29:16 - xugglertest2]  The following libraries were found:
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-ferry.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-xuggler-io.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-xuggler.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-ferry.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-xuggler-io.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-xuggler.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle.so

Что мне делать?

i скопировал xuggler-xuggler-5.4.jar в папку libs проекта, а затем добавьте его в путь сборки. m я делаю это правильно?



Изменить 2: (с помощью ffmpeg)
Я скомпилировал ffmpeg для android на платформе ubuntu согласно заданному Здесь

Я получил скомпилированные файлы в соответствии с документом.
Теперь может кто-нибудь сказать мне, как я могу использовать эти скомпилированные файлы в приложении Android? что именно я должен делать с этими файлами?
Я не нашел подходящей документации. любая помощь будет gr8.


Изменить 3: (Портировано в android -ffmpeg)

Эй, наконец, я скомпилировал ffmpeg на ubuntu, я получил libffmpeg.so. Я успешно перенес его на андроид. libffmpeg.so успешно загружается в Android-активность. Теперь я просто хочу протестировать простую команду или программу ffmpeg.
Можете ли вы предложить, где мне ее искать? вы можете предложить мне примерную команду для его проверки.

Спасибо и приветствую

4b9b3361

Ответ 1

Вы можете использовать ffmpeg для сборки видео с изображений. Вы можете интегрировать ffmpeg в Java (Android) несколькими способами (один из них напрямую запускает его через

Runtime.getRuntime().exec("ffmpeg <options>");

), но, вероятно, хороший способ сделать это через проект Xuggler - он в значительной степени зависит от ffmpeg. Для начала, здесь набор вводных обучающих программ и здесь полный учебник how для кодирования видео из последовательности изображений. Это много работы и чтения, но вся информация, в которой вы нуждаетесь, есть. Удачи!

Ответ 2

Что касается использования xuggler, версия вашей библиотеки не будет работать на вашем конкретном устройстве, так как она содержит собственный код, скомпилированный для платформ x86_64 и i686:

[2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/
[2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/

попробуйте найти версию этой библиотеки с собственными частями кода, скомпилированными для ARMv6 (самая распространенная архитектура Android - включает более старые устройства, если вы не хотите поддерживать устройства старше 1-2 лет назад, было бы лучше ARMv7).

В противном случае вам нужно будет собрать ffmpeg для ARM и использовать его с поддержкой Android NDK. Вам нужно будет написать код в C/С++, реализующий кодирование серии изображений в конкретный файл и завершающий его интерфейсом JNI. Вы можете передавать массивы Java в собственные реализации методов класса.

см. примеры приложений Android NDK в образцах SDK, чтобы узнать, как использовать JNI в вашем коде.