- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果在录制视频时最小化应用程序 - 一切正常,但是一旦我部署应用程序,就会收到此错误:
E/AndroidRuntime: FATAL EXCEPTION: CameraX-video encoding thread
Process: <pkgname>, PID: 12340
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2698)
at androidx.camera.core.VideoCapture.videoEncode(VideoCapture.java:604)
at androidx.camera.core.VideoCapture$2.run(VideoCapture.java:348)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:65)
或者 如果我在 onPause videoCapture?.stopRecording()
时停止录制,则会出现此错误:
E/AndroidRuntime: FATAL EXCEPTION: CameraX-
Process: <pkgname>, PID: 9489
java.lang.IllegalStateException
at androidx.core.util.Preconditions.checkState(Preconditions.java:96)
at androidx.core.util.Preconditions.checkState(Preconditions.java:108)
at androidx.camera.camera2.impl.Camera.openCaptureSession(Camera.java:874)
at androidx.camera.camera2.impl.Camera.onUseCaseReset(Camera.java:625)
at androidx.camera.camera2.impl.Camera$11.run(Camera.java:611)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:65)
如何在最小化应用程序时正确停止录制视频???
这是我的代码:我收集配置:
CameraX.unbindAll()
getDisplayMetrics()
setPreviewConfig()
when (typeCapture) {
TYPE_IMAGE -> {
setImageCapture()
CameraX.bindToLifecycle(this, preview, imageCapture)
}
TYPE_VIDEO -> {
setVideoCapture()
CameraX.bindToLifecycle(this, preview, videoCapture)
}
}
设置videoConfig和videoCapture:
val videoCaptureConfig = VideoCaptureConfig.Builder().apply {
setLensFacing(lensFacing)
setTargetAspectRatioCustom(screenAspectRatio)
setTargetRotation(rotation)
}.build()
videoCapture = VideoCapture(videoCaptureConfig)
然后我开始录制视频:
videoCapture?.startRecording(videoFile,
CameraXExecutors.mainThreadExecutor(), recordListener)
在 onPause() 上我得到的错误如上所述
谢谢
最佳答案
我在 onPause 时停止视频时遇到了同样的错误。为了解决这个问题,我在调用 super.onPause()
之前添加了一个延迟(参见:android: camera onPause/onResume issue)。
private VideoCapture.OnVideoSavedListener videoSavedListener= new VideoCapture.OnVideoSavedListener() {
@Override
public void onVideoSaved(@NonNull File file) {
if(isRecording) {
isRecording = false;
// Do whatever you want
}
}
@Override
public void onError(@NonNull VideoCapture.VideoCaptureError videoCaptureError, @NonNull String message, @Nullable Throwable cause) {
}
};
button.setOnClickListener(v -> {
if(!isRecording){
videoCapture.startRecording(videoFile, CameraXExecutors.mainThreadExecutor(), videoSavedListener);
isRecording = true;
}else{
videoCapture.stopRecording();
}
});
@SuppressLint("RestrictedApi")
@Override
public void onPause() {
if(isRecording){
isRecording = false;
videoCapture.stopRecording();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.onPause();
}else
super.onPause();
}
Please note that video recording use case is currently marked as hidden in the API and is in a very preliminary state and subject to change.
编辑:对于某些设备,在使用 videoCapture 用例集调用 onPause()
时,应用程序仍然会崩溃。我添加了 CameraX.unbindAll()
以在调用 super.onPause()
之前删除所有用例。然后,在 onResume()
方法中我再次绑定(bind)它们。
关于android - CameraX - 在录制视频时在 onPause() 上崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59088142/
我正在尝试在方向更改时实现平稳过渡,就像普通相机应用程序所做的那样(图标旋转,相机 View 不闪烁)。 我已经通过设置 ROTATION_ANIMATION_CROSSFADE 完成了图标旋转部分,
当我进入示例应用程序代码时,提到在创建项目时选择 Kotlin。 我以前使用过camera2 API。 最佳答案 如果您的意思是开发基于camerax 的应用程序。 你可以使用java。他们甚至在 J
我想将 CameraX 预览从 previewView 转换为位图。类似于 textureView.bitmap 的东西 我已经用 textureview 试过了,效果很好,我可以截取 camerav
我尝试使用 Android 开发人员 documentation 使用 CameraX 实现 MLKit 文本分析器.我的期望是分析器将在每一帧上运行,但它只运行一次,当预览初始化时。文本由 MLKi
我尝试使用 CameraView。我是 Android 的初学者。我阅读了一些关于类的文章和信息,但我无法让它发挥作用。 我有以下错误: Caused by: java.lang.IllegalSta
请,有人可以提供使用带有 GLSurfaceView 的 CameraX 库的好例子,找不到任何信息。 最佳答案 不存在将 CameraX 与自定义表面/TextureView 一起使用的文档。在 C
我关注了 Google CameraX code lab实现自定义相机。相机预览很好,但是当我在图像捕获图像旋转后拍摄图像时。我正在以纵向模式拍摄图像,但保存的图像是横向的。这是配置相机的方法 pri
我使用以下版本的 CameraX 依赖项: implementation "androidx.camera:camera-camera2:1.0.0-beta04" implementation "a
对于涉及光学相机通信 (OCC) 的研究项目,我需要主动分析视频帧,我目前正在使用 python 和 opencv 在我的电脑上离线进行分析(我用智能手机录制视频,然后进行处理) .我想使用我的三星
我正在尝试使用 camerax 拍摄多张照片,但只拍摄了第一张照片,代码和日志输出将显示我的意思。 这是代码: Log.d(TAG, "------------------ takin
我正在迁移到 cameraX 并遇到异常 androidx.camera.core.InitializationException: java.lang.RuntimeException: Error
我想实现一个自定义 View ,它将使用 Camera X API 显示实时预览,但我坚持使用 Camera X 的配置... 基于CameraX sample code ,我尝试实现我的自定义 Vi
我正在尝试编写我的第一个 Android 相机应用程序,但它总是选择变焦相机而不是主相机。 (我在华为 P30 Pro 上测试过) 并且代码基于官方的camerax示例应用程序(https://git
我正在使用 cameraX 录制视频。我需要使用 android-gpuimage 将实时滤镜应用于相机预览或任何其他图书馆。可能吗?如果是,请提供一个例子。 @SuppressLint("R
我在 Android 中使用带有 Firebase ML Kit 的新库 CameraX,并在设备可以检测的每一帧中检测人脸。 所以我这样设置 CameraX: CameraX.bindToLifec
我实现了一个新示例,这里是 a link它描述了来自 Google codelabs 的新 CameraX api,但 TextureView 没有显示任何内容并抛出下一个异常: OpenGLRend
因此,我从使用传统相机 API 迁移到 CameraX,尽管它的设置非常简单,但我注意到了一个问题。现在相机似乎比以前花费了几乎两倍甚至更长的时间来开始显示预览。我正在测试 galaxy s7。我的代
我正在尝试遵循我在网络上找到的代码示例(Gabriel Tanner、Ray Wenderlich、Official Introduction),但我通常在第一行就遇到困难: CameraX.
我的用例是一次拍摄两张图像。第一个是 2 倍变焦,第二个是 1 倍变焦。另外,我想将图像保存到文件中。 我的想法是以 2 倍变焦拍摄第一张图像,并在保存图像时将变焦级别设置为 1 倍,并在镜头变焦到
我正在使用 camerax 在我的 android 应用程序中捕获图像。 对我来说一切都很好,但是一些用户在使用 camerax Activity 时报告黑色预览屏幕。 但是当用户从最近的应用程序中打
我是一名优秀的程序员,十分优秀!