admin管理员组文章数量:1287101
public void displayProcess (String path) throws FileNotFoundException {
rawVideoFile = new FileInputStream(path);
yuvBuffer = new byte[height * width * 3];
new Thread(this::playYUVVideo).start();
}
public void playYUVVideo() {
try {
while (rawVideoFile.read(yuvBuffer) == yuvBuffer.length){
//convert YUV to bitmap
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
YuvImage yuvImage = new YuvImage(yuvBuffer, ImageFormat.YCBCR_P010, width, height,null);
yuvImagepressToJpeg(new Rect(0, 0, width, height), 50, outputStream);
byte[] imageBytes = outputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
runOnUiThread(() -> mImageView.setImageBitmap(bitmap));
Thread.sleep(33);
}
}catch (Exception e) {
e.printStackTrace();
}
}
The log said that : java.lang.IllegalArgumentException: Only ImageFormat.NV21 and ImageFormat.YUY2 are supported. at android.graphics.YuvImagepressToJpeg(YuvImage.java:220) at com.example.hlgplus.MainActivity.playYUVVideo(MainActivity.java:101) at com.example.hlgplus.MainActivity$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0) at java.lang.Thread.run(Thread.java:1012)
I want to display P010 directly without converting. Please help me. Thank you!
Edit (26/2/2025):
As I searched, there are 2 reasons for that:
- YuvImage does not support P010.
- BitmapFactory.decodeByteArray just supports JPEG, PNG, WebP. it can't handle 10-bit YUV.
版权声明:本文标题:How can I display P010 raw-video data in Android without converting it to another formats? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741216896a2360216.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论