You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成ExoPlayer后部分安卓设备录制崩溃求助

React Native安卓端接入ExoPlayer后录制崩溃问题

技术栈

  • React Native 0.64
  • react-native-video 5.2.0(已接入ExoPlayer)
  • react-native-vision-camera 2.13.0

问题概述

为react-native-video接入ExoPlayer后,部分安卓设备使用react-native-vision-camera进行录制时出现崩溃,iOS端运行正常。已尝试升级react-native-video版本但无效果,且无法升级/降级react-native-vision-camera版本(操作触发报错)。

错误日志核心内容:

java.lang.IllegalStateException: Could not create media recorder
at com.mrousavy.camera.CameraSession.startRecording(CameraSession.kt:654)
...(后续调用栈略)

可能的解决方案

1. 统一ExoPlayer依赖版本

react-native-video和react-native-vision-camera可能依赖不同版本的ExoPlayer,导致冲突:

  • 执行./gradlew app:dependencies查看安卓项目依赖树,定位两个库引用的ExoPlayer版本
  • 在android/build.gradle中强制统一版本(替换为兼容的版本号):
    allprojects {
        configurations.all {
            resolutionStrategy.force 'com.google.android.exoplayer:exoplayer-core:2.18.1'
            resolutionStrategy.force 'com.google.android.exoplayer:exoplayer-ui:2.18.1'
        }
    }
    

2. 检查并完善权限配置

确保安卓权限配置完整且运行时已正确申请:

  • 在AndroidManifest.xml中添加权限:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
    <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
    
  • 确认已通过react-native-permissions等库动态请求相机和音频权限后再启动录制

3. 调整录制参数适配设备

部分安卓设备对高规格录制参数支持有限,尝试降低配置:

await camera.current.startRecording({
  quality: 'medium',
  codec: 'h264',
  audioBitrate: 128000,
  videoBitrate: 1500000,
  maxDuration: 60,
  onRecordingError: (error) => console.error(error),
  onRecordingFinished: (video) => console.log(video)
})

4. 避免硬件资源冲突

ExoPlayer播放和相机录制可能抢占同一硬件资源,录制前后切换ExoPlayer状态:

// 录制前暂停视频播放
videoRef.current?.pause();
// 执行录制
try {
  await camera.current.startRecording(options);
} finally {
  // 录制结束后恢复播放(如果需要)
  videoRef.current?.play();
}

5. 配置相机兼容性声明

创建android/app/src/main/res/xml/camera_manifest.xml并添加相机特性:

<?xml version="1.0" encoding="utf-8"?>
<camera-features>
    <feature name="android.hardware.camera.back" />
    <feature name="android.hardware.camera.capability.video_recording" />
    <feature name="android.hardware.microphone" />
</camera-features>

在AndroidManifest.xml的application标签内添加引用:

<meta-data
    android:name="com.mrousavy.camera.manifest"
    android:resource="@xml/camera_manifest" />

内容的提问来源于stack exchange,提问作者Zakir Bangash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:35:25