#c# #uwp #microsoft-graph-api #onedrive
#c# #uwp #microsoft-graph-api #onedrive
Вопрос:
Используя Microsoft Graph .NET SDK, я пытаюсь получить доступ к потоку содержимого элемента DriveItem, который является видео, чтобы его можно было воспроизводить в UWP MediaPlayerElement. Однако при развертывании MediaPlayerElement
отображается:
«Ошибка: неподдерживаемый тип видео или неверный путь к файлу».
Я могу получить доступ к Microsoft Graph с помощью Windows Community Toolkit и получить Files.ReadWrite.All
разрешение. Я также получил DriveItem
id
необходимое.
private async void LoadVideo(DriveItem driveItem) {
var graphClient = MicrosoftGraphService.Instance.GraphProvider;
using(Stream responseStream = await graphClient
.Me
.Drive
.Items[driveItem.Id]
.Content
.Request().GetAsync()) {
var memoryStream = responseStream as MemoryStream;
if (responseStream != null) {
// Breakpoint on this line is reached after
// a substantial delay on the using statement
// line. At this line, the memoryStream has a value of 89400353.
MyMPE.Source = MediaSource
.CreateFromStream(memoryStream
.AsRandomAccessStream(), "video/mp4");
} else {
...
}
}
}
Всегда выполняется оператор if. Когда я ставлю точку останова в начале строки MyMPE.Source…
, в инструкции возникает существенная задержка using
до достижения точки останова. Затем MediaPlayerElement отображает сообщение об ошибке «Ошибка: неподдерживаемый тип видео или неверный путь к файлу» в нижней части проигрывателя.
Комментарии:
1. Я не верю, что API поддерживает потоковую передачу напрямую, как это, также я не верю, что медиаплеер будет следовать перенаправлению 302. Вероятно, вам потребуется загрузить файл и передать его с диска.
2. @MarcLaFleur спасибо за ваш комментарий, я подумал, что это могло быть в случае с API, но жаль, может быть, это будет поддерживаться в какой-то момент в будущем.