在TextureView中不断显示android.graphics.Bitmap

问题描述 投票:0回答:1

我写了一个Fragment类,专门用于显示android.graphics.Bitmap的持续流。 Bitmap 对象流由 JavaCV 传递。

我是否必须使用 Canvas.drawBitmap 方法来显示位图才能获取视频?

班级是这样的

/**
 * A simple {@link Fragment} subclass for showing th Video stream.
 */
@EFragment(R.layout.fragment_video)
public class VideoFragment extends Fragment implements TextureView.SurfaceTextureListener, VideoListener {
    public static final String TAG = "de.mw.talk2drone.ui.video.VideoFragment";
    @ViewById
    TextureView textureView;

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onSurfaceTextureAvailable(@NonNull final SurfaceTexture surface, final int width, final int height) {

    }

    @Override
    public void onSurfaceTextureSizeChanged(@NonNull final SurfaceTexture surface, final int width, final int height) {

    }

    @Override
    public boolean onSurfaceTextureDestroyed(@NonNull final SurfaceTexture surface) {
        return false;
    }

    @Override
    public void onSurfaceTextureUpdated(@NonNull final SurfaceTexture surface) {

    }

    @Override
    public void onFrameReceived(TelloVideoFrame frame) {
        Log.d(TAG, "received a frame in Fragment: " +frame);
    }
}

您有一些关于如何在TextureView中平滑显示位图流的示例或链接吗?我已经看到了对 Grafika 的多次引用,这可能会提供一些必须要做的事情的线索。

android video bitmap textureview grafika
1个回答
0
投票

我认为你应该在 onFrameReceived 方法中自己逐帧渲染位图,只需使用计时器将帧更新到 glview, 更重要的是,你需要一个缓冲队列来保存输入帧并按顺序渲染它们;

© www.soinside.com 2019 - 2024. All rights reserved.