Skip to content

故障排查 ​

"The package doesn't seem to be linked" ​

构建出的应用中缺少原生模块。

  • iOS:运行 npx pod-install ios,然后重新构建。
  • 安装或升级本库后请重新构建应用,重新加载 Metro 不会加载新的原生代码。
  • Expo:使用开发构建或 npx expo run:ios / npx expo run:android。Expo Go 无法加载本库。

编辑器打开后立即关闭,或显示 "Fail to load media" ​

  • 先用 isValidFile() 检查文件。
  • 对于 https:// URL,请在两个平台上都安装 https FFmpegKit 包,并检查设备网络。
  • 有些选择器返回的是会过期的临时 URI。如果要稍后再打开文件,请先把它复制到应用自己的存储空间。

maxDuration 似乎不生效 ​

时长以毫秒为单位。maxDuration: 30 表示 30 毫秒,30 秒应写成 30_000。无论 minDuration 如何设置,编辑器都不允许选择短于 1 秒的范围。

showEditor(uri) 报错 ​

请始终传入选项对象,没有选项时也要传空对象:showEditor(uri, {})。

裁剪起点比所选位置偏早或偏晚 ​

未开启精确裁剪时,裁剪点会对齐到关键帧。请将 enablePreciseTrimming 设为 true。

保存到相册失败 ​

  • iOS:在 Info.plist 中添加 NSPhotoLibraryUsageDescription。在 onError 中处理 NO_PHOTO_PERMISSION。
  • Android 9 及更早版本:声明 WRITE_EXTERNAL_STORAGE(参阅安装)。

mp3 输出失败 ​

默认的 FFmpegKit 构建不包含 libmp3lame。请改用 m4a 或 wav,或者换成包含 libmp3lame 的 FFmpegKit 包。

merge() 或 mixAudio() 传入 URL 时失败 ​

这两个函数都只接受本地文件。请先下载输入文件。

Android:在某台特定设备上重新编码失败 ​

本库已经会依次换用 HEVC 和 MPEG-4 软件编码重试,参阅 Android 编码器回退。提交 issue 时,请附上 onLog 的输出(或 tag 为 VideoTrimmerUtil 的 logcat)。

Android:分享面板与我的 FileProvider 冲突 ​

本库使用独立的 provider(${applicationId}.videotrimprovider)和资源名称,不会与你的配置冲突。如果你曾按 8.2.1 或更早版本的文档进行配置,请参阅安装中的升级说明。

修改 SDK 版本后出现构建错误 ​

请确保根 ext 中的值(compileSdkVersion、minSdkVersion、targetSdkVersion、kotlinVersion)符合你所用 React Native 版本的要求。本库如何使用这些值,参阅安装。

性能建议 ​

  • 不需要界面的批量处理,请使用 Headless API trim()。
  • 流复制裁剪几乎瞬间完成。精确裁剪、倍速调整、画面变换、compress() 和 merge() 都需要重新编码,处理大文件时耗时更长。
  • 删除不再需要的输出文件,或定期调用 cleanFiles()。
  • 上传大视频前先压缩。

仍未解决? ​

在 GitHub 上搜索或提交 issue,并附上平台、架构、库版本以及 onError / onLog 的输出。

基于 MIT 许可证发布。