カスタム カメラ ビューを使用して行われた Xamarin.iOS 投稿機能 (Instagram のようなもの) を Xamarin Essentials メディア ピッカーに移行しています。
PickVideoAsync を使用してカメラ ロールからビデオ ファイルを再生しようとすると、.MOV ファイルが取得され、同じビデオを選択すると、以前のバージョンを使用すると .mp4 ファイルになります。
以前のバージョンのファイル パス:
/var/mobile/Containers/Data/Application/657B8450-EDD5-4704-98BF-34B3406A8A37/Documents/IM-20201031151047346.mp4
新しいバージョンのファイル パス:
/var/mobile/Containers/Data/Application/C8821691-6B3E-4F25-9E95-7299CD78676A/Library/Caches/trim.DBCDDE49-0D23-4C15-A450-E38E51421DD7.MOV
私が考えることができる唯一の説明は、ビデオがデバイスに2つの異なる形式で存在するということですか?
問題の 2 番目の部分:
ユーザーがコメントや場所などを追加する投稿編集画面に同じ実装を使用できることを望んでいました...
これは AVPlayer を使用して実装されていますが、.MOV ビデオはサポートしていません。
次の方法はありますか?
A) .MOV をサポートする AVPlayer に代わるものはありますか? (推奨される解決策)
B) mp4 ファイルを取得するために Xamarin Essentials を強制しますか?
C) アプリ内で MOV を mp4 に変換しますか? (可能であれば、これはおそらく遅くなると思います)
これは AVPlayer の実装です。
var videoUrl = GetVideoUrl(mediaViewModel.MediaUrl);
var playerItem = AVPlayerItem.FromUrl(videoUrl);
var player = AVPlayer.FromPlayerItem(playerItem);
var playerLayer = AVPlayerLayer.FromPlayer(player);
player.Seek(CMTime.Zero);
playerLayer.Frame = View.Bounds;
View.Layer.AddSublayer(playerLayer);