Использование MediaElement для воспроизведения видео из потока
можно ли использовать WPF MediaElement для воспроизведения потокового видео из системы.ИО.Объект Stream? Объект Stream извлекается из службы WCF, в которой хранятся файлы мультимедиа.
5 ответов
если вы можете заставить WCF доставить медиа-объект через http-URL (GET)
тогда вы можете просто назначить этот URL-адрес MediaElement.Source
свойство-см. http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.source.aspx.
для случаев, когда такой URL недоступен/возможен:
назначение потока в настоящее время невозможно - хотя есть некоторые хаки, чтобы это произошло, для примера на основе DirectShow см. http://social.msdn.microsoft.com/forums/en-US/wpf/thread/6191ef1a-0010-4294-a5b4-451bbadca33a/ и http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/15/WPF-Hackery-Part-I.aspx .
другой вариант - каким-то образом разместить Silverlight MediaElement
и с помощью SetSource
метод, который может взять поток и воспроизвести его... см.http://silverlightviewport.codeplex.com/SourceControl/list/changesets и http://msdn.microsoft.com/en-us/library/cc190669%28v=vs.95%29.aspx
Это может быть слишком поздно, Надеюсь, это может помочь, если вы все еще ищете ответ.
Да вы можете воспроизводить видео из потока памяти с помощью медиа-элемента WPF.
я использовал сторонний компонент под названием boxed app,миллион спасибо BoxedApp -http://www.boxedapp.com/boxedappsdk/
мне нужно немного обновить код, чтобы он работал для byte[]. Скопируйте приведенный ниже конструктор в класс CustomFileStream из BoxedApp
public CustomFileStream(byte[] data)
{
_Stream = new MemoryStream(data);
_Length = _Stream.Length;
_data = data;
_Offset = 0;
}
создайте приложение wpf и добавьте медиа-элемент и кнопку и скопируйте приведенный ниже код
public MainWindow()
{
BoxedAppSDK.NativeMethods.BoxedAppSDK_Init();
InitializeComponent();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
var MyFileStream = new CustomFileStream(File.ReadAllBytes(@"wildlife.wmv"));
IntPtr ptr = BoxedAppSDK.NativeMethods.BoxedAppSDK_CreateVirtualFileBasedOnIStream(
@"1.wmv",
BoxedAppSDK.NativeMethods.EFileAccess.GenericWrite,
BoxedAppSDK.NativeMethods.EFileShare.Read,
IntPtr.Zero,
BoxedAppSDK.NativeMethods.ECreationDisposition.New,
BoxedAppSDK.NativeMethods.EFileAttributes.Normal,
IntPtr.Zero,
MyFileStream);
using (new SafeFileHandle(ptr, true))
{
mediaElement1.Source = new Uri(Path.GetFullPath("1.wmv"));
mediaElement1.LoadedBehavior = MediaState.Manual;
mediaElement1.Play();
}
}
- для коробочного приложения, пожалуйста, следуйте образцам, и все.. ты в счастливом мире...
то же самое и для Qt Player.
на основе ответа я добавлю полный пример, если предоставленной информации недостаточно.
удачи в кодировании....
прежде чем кто-либо тратит часы, выясняя это для себя: невозможно разместить Silverlight MediaElement в приложении WPF. Причина этого в том, что это один из нескольких типов, которые появляются в PresentationFramework.dll (неизбежно для WPF) и системы.Окна.dll (версии Silverlight), имеющие одинаковые имена и одинаковые пространства имен, но разные типы. (Кто-то должен объяснить, почему у нас есть пространства имен для microsoft!)
Я знаю, что это не то, что вы просили, но вы можете разместить компонент ActiveX VLC внутри окна в WPF, а затем использовать этот элемент управления VLC для подключения к потоку и отображения потока. Вот как я получил потоковую работу через WPF.
Edit:на этой странице приведен пример размещения элемента управления ActiveX внутри WPF
как WPF mediaelement внутренне использует проигрыватель windows media. Если изменить настройки буфера медиаплеера с параметра буфера по умолчанию на пользовательский. Открытые окна медиа-плеер инструменты варианты производительности.
когда вы выбираете опцию " буфер "и устанавливаете" секунды содержимого " на 2. В разделе media player будут добавлены следующие значения реестра. HKEY_CURRENT_USER\программное обеспечение\Microsoft\MediaPlayer\настройки UseDefaultBufferTime=0 CustomBufferTime=2000
вы можете используйте класс реестра dotnet для внесения изменений. Обратитесь по этой ссылке: https://social.msdn.microsoft.com/Forums/vstudio/en-US/1b4b8fb9-ff8f-4861-8e99-4a7a4fc75596/setting-windows-media-player-properties-in-wpf?forum=wpf#ac879a7f-37bc-4ccc-854d-ab6e047086e5