Android 无法从视频中获取完整长度的字节
我正试图从直播视频中保存图像帧。因此,我可以从我的android应用程序中显示实时流视频,并将其保存在本地存储中。现在,我想在saveImage函数中使用某种延迟,以便在特定时间后保存图像。我同时使用了Handler和TimerTask。经过一段时间的延迟后,图像被保存在我的本地目录中,但我获取的图像的长度有时非常小,而另一次是正常的。我希望保存的图像与我在应用程序中获得的视频流的长度完全一致。 我希望我问的问题容易理解。我是android和stack overflow的初学者。 P.S-我使用Android 无法从视频中获取完整长度的字节,android,mjpeg,Android,Mjpeg,我正试图从直播视频中保存图像帧。因此,我可以从我的android应用程序中显示实时流视频,并将其保存在本地存储中。现在,我想在saveImage函数中使用某种延迟,以便在特定时间后保存图像。我同时使用了Handler和TimerTask。经过一段时间的延迟后,图像被保存在我的本地目录中,但我获取的图像的长度有时非常小,而另一次是正常的。我希望保存的图像与我在应用程序中获得的视频流的长度完全一致。 我希望我问的问题容易理解。我是android和stack overflow的初学者。 P.S-我使用
mjpeg
库来显示视频。我得到的视频来自IP摄像头
用于保存图像的代码
public void saveImage(){
try {
photo =
new File(Environment.getExternalStorageDirectory(),
"Download/photos/photo" + Instant.now().getEpochSecond() + ".jpg");
if (photo.exists()) {
photo.delete();
}
System.out.println("Photo " + photo);
FileOutputStream fos = new FileOutputStream(photo.getPath());
System.out.println("Image_length" +image.length);
fos.write(image);
fos.close();
} catch (IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}
}
调用saveImage的代码
final Bitmap outputImg = BitmapFactory.decodeByteArray(image, 0, image.length);
if (outputImg != null) {
if (run) {
newFrame(outputImg);
// Saving frames in internal Storage
new Timer().schedule(
new TimerTask() {
@Override
public void run() {
saveImage();
}
},5000
);
}
} else {
Log.e(tag, "Read image error");
}