0

我们正在将使用自定义相机视图完成的 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);
4

1 回答 1

0

我认为 GetVideoUrl 不正确。

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

感谢您的支持。

于 2020-11-03T00:05:37.787 回答