Я пытаюсь захватить кадры из видеофайла в андроиде, единственная альтернатива (та, которая уже скомпилирована, готова к использованию) - это проект VideoToGif. Он использует JavaCV, JavaCpp и Java SE внутри Android! Окончательный apk действительно большой, но я делаю только академический проект...
ОШИБКА Я использую следующий код:
ModifiedFrameGrabber frameGrabber = new ModifiedFrameGrabber(VIDEO_PATH);
IplImage frame = null;
try
{
frameGrabber.start();
frame = frameGrabber.grab();
} catch(Exception e){...}
byte[] data = frame.getByteBuffer().array();
В последней строке я получаю ошибку:
Caused by: java.lang.UnsupportedOperationException
at java.nio.DirectByteBuffer.protectedArray(DirectByteBuffer.java:292)
at java.nio.ByteBuffer.array(ByteBuffer.java:144)
at my.package.onCreate(MyClass:x)
Кто-нибудь может мне помочь? Похоже, что в Java API...
Прямые буферы NIO не имеют массива. Вызовите get()
вместо array()
.