Wie kann ich P010-Roh-Video-Daten in Android anzeigen, ohne sie in andere Formate zu konvertieren?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann ich P010-Roh-Video-Daten in Android anzeigen, ohne sie in andere Formate zu konvertieren?

by Anonymous » 25 Feb 2025, 10:21

public void displayProcess (String path) throws FileNotFoundException {
rawVideoFile = new FileInputStream(path);
yuvBuffer = new byte[height * width * 3 / 2];
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);
yuvImage.compressToJpeg(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();
}
}
< /code>
Das Protokoll sagte, dass:
java.lang.ILLEGALARGumentException: nur ImageFormat.nv21 und ImageFormat.yuy2 unterstützt werden. Yuvimage.java:220)
at com.example.hlgplus.mainActivity.playyuvvideo (MainActivity.java:101)
at com.example.hlgplus.mainActivity $$ externalsynthethethethethetheta3.run (D8 $$ Syntheticclass: 0)
at java.lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang .lang $ $$). Thread.run (Thread.java:1012)
Ich möchte P010 direkt anmelden, ohne < /p zu konvertieren>

Top