видео arcore не отображается - PullRequest
       39

видео arcore не отображается

0 голосов
/ 02 августа 2020

Я хочу воспроизвести видео с помощью ARCore, но он отображает только прямоугольную форму файла video_screen.sfb и звук видео

enter image description here

введите описание изображения здесь

и это моя mainActivity

    ExternalTexture externalTexture = new ExternalTexture();
    MediaPlayer mediaPlayer = MediaPlayer.create(this , R.raw.n);
    mediaPlayer.setSurface(externalTexture.getSurface());
    mediaPlayer.setLooping(true);

    ModelRenderable.builder()
            .setSource(this , R.raw.video_screen)
            .build()
            .thenAccept(modelRenderable -> {
                videoRenderable = modelRenderable;
                videoRenderable.getMaterial().setExternalTexture("videoTexture" , externalTexture);
                videoRenderable.getMaterial().setFloat4("keyColor", new Color(0.01843f,1.0f, 0.098f));

            });
    ArFragment arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.arFragment);
    arFragment.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> {
        AnchorNode anchorNode = new AnchorNode(hitResult.createAnchor());
        if (!mediaPlayer.isPlaying()){
            mediaPlayer.start();
            externalTexture.getSurfaceTexture().setOnFrameAvailableListener(surfaceTexture -> {
                anchorNode.setRenderable(videoRenderable);
                externalTexture.getSurfaceTexture().setOnFrameAvailableListener(null);
            });
        }
        else {
            anchorNode.setRenderable(videoRenderable);
        }

        float width = mediaPlayer.getVideoWidth();
        float height = mediaPlayer.getVideoHeight();

        anchorNode.setLocalScale(new Vector3(HEIGHT * (width/height) , HEIGHT ,1.0f));

        arFragment.getArSceneView().getScene().addChild(anchorNode);

    });

1 Ответ

0 голосов
/ 06 сентября 2020
videoRenderable.getMaterial().setFloat4("keyColor", new Color(0.01843f,1.0f, 0.098f));

В этой строке используйте 0.0987f вместо 0.098f, эта строка используется для фильтрации CHROME_KEY_COLOR из видео, и большая часть последнего видео имеет CHROME_KEY_COLOR, поэтому необходимо точное значение.

...