Как читать потоки из видеофайлов на iPhone по их абсолютному пути - PullRequest
0 голосов
/ 22 января 2020

Я застрял при попытке получить потоки из видео на iPhone. Это Xamarin.Forms проект.

Во-первых, я получил VideoURL PHAsset.RequestContentEditingInput вот так

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.

Тогда я хочу получить видеопоток VideoURL, используя StreamReader, как это

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-адресом видео и, таким образом, не может найти видеофайл.

Итак, мой вопрос, как получить поток по абсолютному пути видео? Спасибо.

1 Ответ

0 голосов
/ 22 января 2020

Я пытался использовать путь к файлу, как

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

, то есть удалил "file: //", тогда он работает.

...