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 Copyright (c) 2000-2017 gcc 4.8 (GCC) 構成でビルドされた FFmpeg 開発者:
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 サイド データ: displaymatrix: -90.00 度の回転 ストリーム #0:1(eng): オーディオ:aac (mp4a / 0x6134706D), 48000 Hz,ステレオ、fltp、256 kb/s (デフォルト) メタデータ:
creation_time : 2018-03-01T08:47:13.000000Z handler_name : SoundHandleStream マッピング: ストリーム #0:0-> #0:0 (h264 (ネイティブ) -> h264 (libx264)) [q] を押して停止、[?]フィルターの再初期化中にエラーが発生しました!フィルター ネットワークにフレームを挿入できませんでした: ストリーム #0:0Conversion のデコードされたデータの処理中にメモリ不足のエラーが発生しました! I ReactNativeJS: 4, { 高さ: 640, 幅: 480 } 03-01 15:40:05.757 29497 29772 W ReactNativeJS: { [エラー: 圧縮エラー: 失敗しました。ffmpeg バージョン 3.3.5 Copyright (c) 2000-2017 gcc 4.8 (GCC) 構成でビルドされた FFmpeg 開発者:
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 サイド データ: displaymatrix: -90.00 度の回転 ストリーム #0:1(eng): オーディオ:aac (mp4a / 0x6134706D), 48000 Hz,ステレオ、fltp、256 kb/s (デフォルト) メタデータ:
creation_time : 2018-03-01T08:47:13.000000Z handler_name : SoundHandleStream マッピング: ストリーム #0:0-> #0:0 (h264 (ネイティブ) -> h264 (libx264)) [q] を押して停止、[?]フィルタの再初期化中に helpError が発生しました!フレームをフィルタ ネットワークに挿入できませんでした: ストリーム #0:0Conversion のデコード データの処理中にメモリ不足エラーが発生しました!] framesToPop: 1, code: 'EUNSPECIFIED' }
この問題の解決策、またはアップロードする前にビデオを圧縮するその他の方法。