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

React Native Compressor压缩4K视频报错问题求助

4K视频压缩报错问题

问题描述

我尝试用「auto」和「manual」两种方式压缩一段4K视频:

  • 视频元数据:时长20秒,帧宽3840,帧高2160,比特率24551kbps
    每次压缩均报错:
[java.lang.Throwable: java.lang.Throwable]

原本以为内存更高的设备能正常运行,但除S23 Ultra外,所有测试设备都出现相同问题,仅1920分辨率以下的视频可正常压缩。

更新测试结果

我测试了React-native-compressor官方作者提供的低比特率4K视频(比特率4800kbps),两款视频在Galaxy A16上都能流畅播放,但压缩时同样报错。

测试设备与Android版本

  • Galaxy A16(Android 14):6GB内存,八核,2340x1080分辨率,压缩4K视频报错
  • Android电视(Android 9.0):压缩4K视频报错
  • Android盒子sz3568(Android 11):所有视频压缩均报错,错误信息:
[java.lang.NullPointerException: java.lang.NullPointerException]
  • S23 Ultra:4K视频压缩正常

依赖版本

  • React Native版本:
"react-native": "npm:react-native-tvos@0.77.1-0",
  • React Native Compressor版本:
"react-native-compressor": "^1.11.0",

压缩代码实现

const compressionCallback = async (uri: string) => {
   const { compress } = compression;
   if (compress) {
     console.log("url123", url);
     const compressedUri = await Video.compress(uri, {
       compressionMethod: "manual",
       downloadProgress: (progress) => {
         // console.log("Compression progress:", progress);
         setProgress(progress);
       },
       progressDivider: 1,
       bitrate: 2_800_000,
       maxSize: 720,
     }).catch((err) => {
       console.log("Error in compression", err);
       return uri;
     });
     const newFilePath = `${downloadFolder}${fileName}`;
     console.log("Compressed file saved to:", newFilePath);
     const meta = await getVideoMetaData(compressedUri);
     console.log("MetaData", meta);
     await FileSystem.moveAsync({
       from: compressedUri,
       to: newFilePath,
     });
     return newFilePath;
   }
   return uri;
 };

疑问与诉求

  1. 视频播放与视频压缩是否基于不同机制?是否使用不同插件?
  2. 希望得到上述问题的解决方案。

内容的提问来源于stack exchange,提问作者Rishabh Garg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:55:10