如何在Xamarin iOS中播放.MOV文件

时间:2020-10-31 16:30:04

标签: ios xamarin xamarin.ios ios-camera xamarin.essentials

我们正在将使用自定义相机视图完成的Xamarin.iOS发布功能(类似于Instagram)迁移到Xamarin Essentials Media Picker。

当尝试使用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

我能想到的唯一解释是,视频在设备中以两种不同的格式存在吗?

现在问题的第二部分:

我希望我可以在“帖子”编辑屏幕中使用相同的实现,在该屏幕上,用户可以添加评论,位置等...

这是使用AVPlayer实现的,但不支持.MOV视频。

有没有办法:

A)支持.MOV的AVPlayer的替代方案? (首选解决方案)

B)强制执行Xamarin Essentials以获取mp4文件?

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);

1 个答案:

答案 0 :(得分:0)

我发现GetVideoUrl不正确。

通过将其更改为NSUrl.CreateFileUrl(videoUrl,null);有效。即使带有mov文件!

感谢支持。

相关问题