Как воспроизвести видео из Stream или MemoryStream с помощью WPF-Mediakit? - PullRequest
0 голосов
/ 23 сентября 2019

Для моего приложения wpf мне нужно воспроизвести видеофайлы, сохраненные в MemoryStream.Возможно ли достичь этого с помощью WPF-mediakit?

Поскольку MediaElement не поддерживает воспроизведение видео непосредственно из памяти, я использовал библиотеку vlc.dotnet для достижения этой цели.Однако я ищу альтернативу.Я нашел несколько постов, в которых говорится, что WPF-Mediakit может воспроизводить видео из MemoryStream, но я не смог найти описанную функциональность в исходном коде или документации.

Если кто-нибудь мог бы указать мне правильное направление к игревидео, сохраненное в памяти в WPF-Mediakit, было бы здорово.

1 Ответ

0 голосов
/ 24 сентября 2019

Нет, WPF-MediaKit не может воспроизводить видео из потока памяти.Просто сохраните его во временный файл (например, используйте System.IO.Path.GetTempFileName()) и воспроизведите видео из файла.

WPF-MediaKit использует DirectShowLib , который является просто оболочкойвокруг MS Windows DirectShow интерфейс.И это неуправляемый код.Итак:

  1. Вы не можете использовать C # MemoryStream, то есть управляемую память, для неуправляемого кода.Вы должны использовать неуправляемую память.
  2. DirectShow основан на фильтрах.AFAIK у него нет входного фильтра, который можно воспроизводить из памяти.Но вы можете кодировать один, например, см. https://stackoverflow.com/a/24478030/254109

Примечание: Вы также можете использовать некоторые решения на основе FFmpeg, см. https://github.com/Sascha-L/WPF-MediaKit/wiki/Similar-Projects например FFME .

...