React Native视频压缩问题:react-native-compressor无效求替代方案
React Native 视频压缩替代方案
如果 react-native-compressor 未达到预期压缩效果,可以试试以下几个成熟的替代包:
react-native-video-processing
支持视频压缩、裁剪、转码等全流程操作,可通过自定义比特率、分辨率精准控制输出文件大小。比如设置更低的比特率或缩小分辨率,能直接降低视频体积:import VideoProcessing from 'react-native-video-processing'; const compressVideo = async (inputPath) => { const outputPath = await VideoProcessing.compress( inputPath, { bitrate: '500000', // 设定为500kbps resolution: { width: 1280, height: 720 }, } ); return outputPath; };react-native-ffmpeg
基于FFmpeg的封装,功能覆盖所有视频处理场景,支持通过原生FFmpeg命令自定义压缩逻辑。比如调整CRF值(恒定速率因子,值越大压缩率越高,23-28为常用合理区间)、编码格式等:import { RNFFmpeg } from 'react-native-ffmpeg'; const compressWithFFmpeg = async (inputPath, outputPath) => { // H.264编码+CRF25+音频128kbps的压缩命令 const command = `-i ${inputPath} -c:v libx264 -crf 25 -c:a aac -b:a 128k ${outputPath}`; await RNFFmpeg.execute(command); };注意需安装对应功能的FFmpeg子包,如
react-native-ffmpeg-full包含全编码库。react-native-image-picker(内置压缩)
若视频是通过文件选择器获取,可直接用这个包的内置压缩功能。配置videoQuality参数为low或medium,选择视频时就能直接拿到压缩后的文件:import ImagePicker from 'react-native-image-picker'; const pickAndCompressVideo = () => { ImagePicker.launchVideoLibrary({ videoQuality: 'low', mediaType: 'video', }, (response) => { if (response.uri) { // 处理已压缩的视频文件 } }); };
另外补充:之前用react-native-compressor无效,可能是未配置有效压缩参数(如未指定比特率/分辨率),或原视频已处于低码率状态。
内容的提问来源于stack exchange,提问作者Abinash Karmakar
相关产品推荐
相关产品推荐

