Android端末で、cameraプラグインで撮影した動画をImageGallerySaverを使って保存しようとしたら、下記のエラーが出ました
E/MethodChannel#image_gallery_saver( 5389): Failed to handle method call
E/MethodChannel#image_gallery_saver( 5389): java.lang.IllegalArgumentException: MIME type application/octet-stream cannot be inserted into content://media/external/images/media; expected MIME type under image/*
パスに空白文字等があるとエラーになるという話を見かけたので、cameraから渡されたパスを確認したらこのようなものでした。
/data/user/0/[パッケージID]/cache/REC2004549943054014171.temp
.tempという拡張子ではImageGallerySaverが動画として認識できなかったようです。
REC2004549943054014171.temp.mp4といった感じでリネームしたら保存ができるようになりました。
Future onStopButtonPressed() async {
final CameraController? cameraController = controller;
stopVideoRecording().then((XFile? file) async {
if (file != null) {
String tmpPath = file.path;
print(tmpPath);
try {
if (tmpPath.contains('.mp4') || tmpPath.contains('.MP4')) {
} else {
File tmpfile = File(tmpPath);
tmpPath = tmpPath + '.mp4';
File newFile = await tmpfile.renameSync(tmpPath);
}
final result = await ImageGallerySaver.saveFile(tmpPath,
isReturnPathOfIOS: isIOS);
print(result);
} catch (e) {
print(e);
}
}
});
}