ios - 如何通过绝对路径从 iPhone 上的视频文件读取流

标签 ios video xamarin.forms streamreader phasset

我在尝试从 iPhone 上的视频获取流时遇到了困难。这是一个 Xamarin.Forms 项目。

首先,我通过 PHAsset.RequestContentEditingInput 获得了 VideoURL,如下所示

PHAsset videoAsset;
...
videoAsset.RequestContentEditingInput(new PHContentEditingInputRequestOptions(), (contentEditingInput, dictInfo) =>
                {
                    if (videoAsset.MediaType == PHAssetMediaType.Video)
                    {
                        AVFoundation.AVUrlAsset avUrlAsset = (AVFoundation.AVUrlAsset)contentEditingInput.AvAsset;
                        string VideoURL = avUrlAsset.Url.AbsoluteString;

VideoURL 类似于 file:///var/mobile/Media/DCIM/108APPLE/IMG_8078.MOV

然后我想使用 StreamReader 通过 VideoURL 获取视频流,如下所示

var streamReader = new StreamReader(videoURL);

或者像这样使用 File.Open

var fileStream = File.Open(videoURL, FileMode.Open);

但这两种方法都会抛出System.IO.DirectoryNotFoundException并表示

找不到路径的一部分/private/var/containers/Bundle/Application/BC860AE6-B358-405D-B2CD-47ECF853F365/test.app/file:/var/mobile/Media/DCIM/108APPLE/IMG_8078.MOV

如您所见,它自动在视频 URL 之前添加了我的应用路径,因此找不到视频文件。

所以我的问题是,如何通过视频的绝对路径获取流?谢谢。

最佳答案

我尝试使用文件路径,例如

/var/mobile/Media/DCIM/108APPLE/IMG_8078.MOV

即删除“file://”,然后就可以了。

关于ios - 如何通过绝对路径从 iPhone 上的视频文件读取流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854491/

相关文章:

ios - 如何在 Xcode 中为 tableView 更改原型(prototype)单元格的高度?

ios - UITableViewCells "shines"槽的可扩展内容

iOS 应用和订阅?

iOS6 中 iPhone 和 iPad 问题内联的 Html5 视频标签

uinavigationbar - 使用Xamarin Forms,如何覆盖后退按钮功能?

xamarin.forms - 为什么绝对导航 URL 不清除导航堆栈?

iphone - 将 UITabBarController 内的 UITabBar 转换到我自己的类(class)

javascript - 将视频 blob 保存到文件系统 electron/node js

python - FFmpeg 仅在某些运行时返回 'invalid argument',即使它是相同的代码

xamarin.forms - 在 Xamarin 表单中调用 DisplayALert() 时出现异常