Я пытаюсь воспроизвести видео, хранящееся на SD-карте, с помощью javacv. Ниже приведен мой код
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playthevideo();
}
protected void playthevideo() {
String imageInSD = "/storage/080A-0063/dama/" + "test3.mp4";
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(imageInSD);
AndroidFrameConverter converterToBitmap = new AndroidFrameConverter();
OpenCVFrameConverter.ToIplImage converterToipi = new OpenCVFrameConverter.ToIplImage();
try {
Log.d("Tag", "try");
grabber.start();
Log.d("Tag", "started");
int i = 0;
IplImage grabbedImage = null;
ImageView mimg = (ImageView) findViewById(R.id.a);
grabber.setFrameRate(grabber.getFrameRate());
ArrayList<Bitmap> bitmapArray = new ArrayList<Bitmap>();
while (((grabbedImage = converterToipi.convert(grabber.grabImage())) != null)) {
Log.d("Tag", String.valueOf(i));
int width = grabbedImage.width();
int height = grabbedImage.height();
if (grabbedImage == null) {
Log.d("Tag", "error");
}
IplImage container = IplImage.create(width, height, IPL_DEPTH_8U, 4);
cvCvtColor(grabbedImage, container, CV_BGR2RGBA);
Bitmap bitmapnew = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmapnew.copyPixelsFromBuffer(container.getByteBuffer());
if (bitmapnew == null) {
Log.d("Tag", "bit error");
}
mimg.setImageBitmap(bitmapnew);
mimg.requestFocus();
i++;
}
Log.d("Tag", "go");
}
catch(Exception e) {
}
}
}
просто игнорируйте теги, потому что они предназначены только для целей тестирования. Когда я запускаю этот код, основной макет активности все еще загружается, в то время как монитор Android показывает значение «i» (которое является текущим номером кадра) и внезапно после кода кадра номер 3671 выходит из цикла while, и imageview
показывает кадр, который не является конечным кадром этого видео (это где-то около просмотра видео). Мне не удалось найти способ показать захваченные кадры из ffmpegframegrabber, поэтому я решил показать изображение в представлении изображения таким образом. Может ли кто-нибудь сказать мне, почему я получаю эту ошибку или другую ошибку без пути для воспроизведения и отображения видео в активности Android? Кстати, javacv 1.3.1 правильно импортируется в мою среду разработки Android. Спасибо.