🎨
image_pickerで動画を選択するとmp4に変換されるのを無効にしたい。
Flutter の image_picker を使ってカメラロールから動画を選択するとmp4に変換されて保存されます。
通常の動画なら特に問題はありませんが、iPhoneの場合HDRで撮影された HEVC(H.265) の動画が渡されることがあります。この HEVC(H.265) の動画を h264 SDR mp4 にそのまま変換すると、トーンマッピングなどがなにもされていないようで白っぽい動画になってしまいます。
これを防ぎたいので image_picker の ios コードを見て mp4 に変換する部分を改良しました。
packages/image_picker/image_picker_ios/ios/Classes/FLTImagePickerPlugin.m
の 232 行目を見るとMP4に変換するようにコーディングされていることがわかります。
imagePickerController.mediaTypes = @[
(NSString *)kUTTypeMovie, (NSString *)kUTTypeAVIMovie, (NSString *)kUTTypeVideo,
(NSString *)kUTTypeMPEG4
];
(NSString *)kUTTypeMovie, 以降のコードを削除します。
imagePickerController.mediaTypes = @[(NSString *)kUTTypeMovie];
これで動画が変換されずにHDR動画のまま選択できるようになりました。
また、このままでは動画の解像度が下げられてしまうのでこちらの記事も参考にしてください。
Discussion