尝试使用 Shahen 的 react-native-video-processing :
下面是代码:
compressVideo(source) {
const options = {
width: 800,
height: 800,
bitrateMultiplier: 3,
saveToCameraRoll: true,
saveWithCurrentDate: true,
removeAudio: true
};
ProcessingManager.compress(source, options)
.then(data => {
console.log(data);
this.setState({ base64String: data });
})
.catch(console.warn);
}
但它会在 Android 设备中出现错误。
{ [错误:压缩错误:失败。ffmpeg 版本 3.3.5 版权所有 (c) 2000-2017 FFmpeg 开发人员使用 gcc 4.8 (GCC) 配置构建:
compatible_brands: isommp42 creation_time : 2018-03-01T08:47:13.000000Z com.android.version: 7.0 Duration: 00:00:04.07, start: 0.000000, bitrate: 3366 kb/s Stream #0:0(eng): Video : h264 (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 640x480, 3091 kb/s, SAR 1:1 DAR 4:3, 29.88 fps, 30 tbr, 90k tbn, 180k tbc (默认) 元数据: 旋转
: 90 creation_time : 2018-03-01T08:47:13.000000Z
handler_name : VideoHandle Side data: displaymatrix: 旋转 -90.00 度 Stream #0:1(eng): Audio:aac (mp4a / 0x6134706D), 48000 Hz,立体声,fltp,256 kb/s(默认)元数据:
creation_time : 2018-03-01T08:47:13.000000Z handler_name : SoundHandleStream 映射: Stream #0:0-> #0:0 (h264 (native) -> h264 (libx264))按 [q] 停止,[?]寻求帮助错误重新初始化过滤器!无法将帧注入过滤器网络:处理流#0:0转换失败的解码数据时出现内存不足错误!] framesToPop:1,代码:'EUNSPECIFIED'} 03-01 15:40:05.658 29497 29772我 ReactNativeJS:4,{ 高度:640,宽度:480 } 03-01 15:40:05.757 29497 29772 W ReactNativeJS:{ [错误:压缩错误:失败。ffmpeg 版本 3.3.5 版权所有 (c) 2000-2017 FFmpeg 开发人员使用 gcc 4.8 (GCC) 配置构建:
compatible_brands: isommp42 creation_time : 2018-03-01T08:47:13.000000Z com.android.version: 7.0 Duration: 00:00:04.07, start: 0.000000, bitrate: 3366 kb/s Stream #0:0(eng): Video : h264 (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 640x480, 3091 kb/s, SAR 1:1 DAR 4:3, 29.88 fps, 30 tbr, 90k tbn, 180k tbc (默认) 元数据: 旋转
: 90 creation_time : 2018-03-01T08:47:13.000000Z
handler_name : VideoHandle Side data: displaymatrix: 旋转 -90.00 度 Stream #0:1(eng): Audio:aac (mp4a / 0x6134706D), 48000 Hz,立体声,fltp,256 kb/s(默认)元数据:
creation_time : 2018-03-01T08:47:13.000000Z handler_name : SoundHandleStream 映射: Stream #0:0-> #0:0 (h264 (native) -> h264 (libx264))按 [q] 停止,[?]寻求帮助错误重新初始化过滤器!无法将帧注入过滤器网络:Out of memoryError while processing the decoded data for stream #0:0Conversion failed!] framesToPop: 1, code: 'EUNSPECIFIED' }
此问题的任何解决方案或任何其他在上传前压缩视频的方法。