我写了一个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 的多次引用,这可能会提供一些必须要做的事情的线索。
我认为你应该在 onFrameReceived 方法中自己逐帧渲染位图,只需使用计时器将帧更新到 glview, 更重要的是,你需要一个缓冲队列来保存输入帧并按顺序渲染它们;