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; };
疑问与诉求
- 视频播放与视频压缩是否基于不同机制?是否使用不同插件?
- 希望得到上述问题的解决方案。
内容的提问来源于stack exchange,提问作者Rishabh Garg
相关产品推荐
相关产品推荐

