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

У меня нет видеокадров в ArrayList<Bitmap>. Я получил доступ к этим кадрам, используя метод MediaMetadataRetriever.getFrameAtTime() в видеофайле (.mp4).

я обратный порядок кадров в 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

Что я должен делать ??

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



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


Изменить 3: (перенесено на Android -ffmpeg)

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

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


person Chaitanya Chandurkar    schedule 12.08.2012    source источник
comment
Вы решили это? Помогите пожалуйста, у меня похожее требование.   -  person Chandra Sekhar    schedule 12.08.2012
comment
к сожалению у меня нет. Я опубликую решение здесь, как только решу это.   -  person Chaitanya Chandurkar    schedule 13.08.2012
comment
если у вас есть доступ к видеофайлу, вы не можете просто скопировать его на SD-карту? getFrameAtTime() в любом случае дает вам только 1 кадр, поэтому я не уверен, как вы будете создавать из него видео.   -  person hovanessyan    schedule 15.08.2012
comment
да я делаю это !! м получать кадры !! теперь я хочу перевернуть видео.. поэтому я изменю порядок кадров в очереди ArrayList‹Bitmap›. теперь я хочу визуализировать видео, используя обратную очередь кадров !!   -  person Chaitanya Chandurkar    schedule 15.08.2012
comment
я немного отредактировал свой вопрос. пожалуйста, взгляните   -  person Chaitanya Chandurkar    schedule 15.08.2012
comment
также ознакомьтесь с инструкциями youtube.com/playlist?list=PL18879AD3C269291A&feature=plcp.   -  person hovanessyan    schedule 18.08.2012
comment
Пожалуйста, взгляните на мое редактирование. Я скомпилировал ffmpeg на ubuntu.   -  person Chaitanya Chandurkar    schedule 20.08.2012
comment
насчет твоего обновления2 - для того и есть такой проект как xuggler - потому что тебе нужна обертка для ffmpeg - ты не можешь использовать ее напрямую в коде, кроме как если запускаешь через Runtime.getRuntime().exec(ffmpeg ‹options›); как я уже сказал в своем ответе.   -  person hovanessyan    schedule 20.08.2012
comment
пожалуйста, взгляните на мой Edit 3. Я успешно портировал ffmpeg на Android. просто нужна небольшая помощь в тестировании.   -  person Chaitanya Chandurkar    schedule 26.08.2012
comment
Xuggler не реализован в Android. см. здесь stackoverflow.com/ вопросы/23780436/   -  person AndroidGeek    schedule 19.06.2014


Ответы (2)


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

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

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

person hovanessyan    schedule 15.08.2012
comment
Или вы можете создать ffmpeg как разделяемую библиотеку и связать ее; напишите оболочку JNI, и все будет готово. - person Shark; 17.08.2012
comment
пожалуйста, взгляните на мою проблему. любая помощь будет здорово. см. Редактировать - person Chaitanya Chandurkar; 18.08.2012
comment
попробуйте добавить все jar-файлы из xuggler›share›java›jars в путь сборки - person hovanessyan; 18.08.2012
comment
пожалуйста, взгляните на мой Edit 3. Я успешно портировал ffmpeg на Android. просто нужна небольшая помощь в тестировании. - person Chaitanya Chandurkar; 26.08.2012
comment
эй Runtime.getRuntime().exec(ffmpeg); дает мне ошибку среды null. как я могу справиться с этим. см., что я разместил вопрос, связанный с этим, здесь: stackoverflow.com/questions/12129814/ - person Chaitanya Chandurkar; 26.08.2012
comment
Runtime.getRuntime().exec(ffmpeg -кодеки); выдает мне ошибки IOException разрешение запрещено (НАТИВНЫЙ МЕТОД) !! m с помощью скомпилированного ffmpeg. как я могу это решить? - person Chaitanya Chandurkar; 28.08.2012
comment
@ Чайтанья Чандуркар, у тебя все работает или ты нашел какое-то другое решение? если бы вы могли опубликовать ответ на свой вопрос, был бы признателен. - person Ravi K. Sharma; 18.11.2013

Что касается вашего использования 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/C++, реализующий кодирование вашей серии изображений в определенный файл и обернуть его интерфейсом JNI. Вы можете передавать массивы Java в собственные реализации методов класса.

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

person Piotr Kowalik    schedule 21.08.2012