¿Es posible usar WPF MediaElement para reproducir video desde un objeto System.IO.Stream? El objeto Stream se está recuperando de un servicio WCF que almacena los archivos multimedia.Uso de MediaElement para reproducir video desde Stream
Respuesta
si se puede hacer la WCF entregar el objeto de multimedia a través de una http-URL (GET)
a continuación, puedes asignar esa URL a la propiedad MediaElement.Source
- ver http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.source.aspx.
Para los casos en que dicha URL no está disponible/posible:
Asignación de un Stream no es posible en la actualidad - aunque hay algunos trucos para que esto suceda, para un ejemplo basado en DirectShow ver http://social.msdn.microsoft.com/forums/en-US/wpf/thread/6191ef1a-0010-4294-a5b4-451bbadca33a/ y http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/15/WPF-Hackery-Part-I.aspx.
Otra opción sería la de alguna manera el anfitrión de la Silverlight MediaElement
y utilizar el método SetSource
que puede tomar una corriente y reproducirlo ... ver http://silverlightviewport.codeplex.com/SourceControl/list/changesets y http://msdn.microsoft.com/en-us/library/cc190669%28v=vs.95%29.aspx
Sé que esto no es lo que usted pidió pero usted puede alojar un componente VLC ActiveX dentro de una ventana en WPF y luego usar ese control VLC para conectarse a la transmisión y mostrar la transmisión. Así es como obtuve la transmisión trabajando a través de WPF.
Editar: this page has an example of how to host an ActiveX control inside WPF
Antes de que nadie desperdicia horas para encontrar este por sí mismos: es imposible para acoger el Silverlight MediaElement en una aplicación de WPF. La razón de esto es que es uno de los tipos que aparecen en PresentationFramework.dll (inevitable para WPF) y System.Windows.dll (versiones de Silverlight) que tienen los mismos nombres y los mismos espacios de nombres, pero son de tipos diferentes. (¡Alguien debería explicar por qué tenemos espacios de nombres en microsoft!)
Esto es cierto. Lamentablemente tuve que descubrirlo de la manera difícil. :( – rafale
Sé que esta es una respuesta de un año, pero no son "múltiples tipos distintos con el mismo nombre en el mismo espacio de nombres" ¿por qué existen alias de referencia? –
Siempre es posible hacer el sitio web Silverlight y usar MediaElement allí y en la aplicación WPF agrego el control WebBrowser con la fuente al sitio web de Silverlight y está hecho. –
Podría ser demasiado tarde, con suerte esto podría ayudar si aún está buscando una respuesta.
Sí, puede reproducir video de la secuencia de la memoria utilizando el elemento de medios WPF.
He utilizado un tercer componente parte llamada aplicación en caja, Un millón de gracias a BoxedApp - http://www.boxedapp.com/boxedappsdk/
tengo que actualizar el código un poco pequeña para hacer que funcione para byte []. Copiar el constructor de abajo a la clase CustomFileStream de BoxedApp
public CustomFileStream(byte[] data)
{
_Stream = new MemoryStream(data);
_Length = _Stream.Length;
_data = data;
_Offset = 0;
}
Crear una aplicación de WPF y añadir un elemento de comunicación y un botón y copia el código de abajo
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();
}
}
- para la aplicación en caja por favor, siga las muestras y eso es es ... estás en un mundo feliz ...
Pasa lo mismo con QT Player.
Según la respuesta, agregaré un ejemplo completo si la información proporcionada no es suficiente.
feliz de codificación ....
¡Gran respuesta, muchas gracias! – Mafii
Como WPF MediaElement utiliza internamente windows media player. Si modifica la configuración del búfer del reproductor de medios de la configuración predeterminada del búfer a la personalización. Abra el reproductor multimedia de Windows Herramientas Opciones Rendimiento.
Cuando elige la opción "Búfer" y establece "Segundos de contenido" en 2. Los siguientes valores de registro se agregarán en el reproductor de medios. HKEY_CURRENT_USER \ Software \ Microsoft \ MediaPlayer \ Preferences UseDefaultBufferTime = 0 CustomBufferTime = 2000
Puede utilizar clase de registro dotnet para hacer cambios. Referir este enlace: 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
- 1. MediaElement en WPF ¿reproducir video de la transmisión?
- 2. ¿Qué tipos de video puede reproducir MediaElement?
- 3. Cómo reproducir video desde NSData
- 4. cómo reproducir video desde la url
- 5. Vaadin framework reproducir video
- 6. Hipervínculo para reproducir video de youtube
- 7. Reproducir video en TextureView
- 8. Reproducir video usando AVPlayer
- 9. Uso de Fluidsynth para reproducir notas desde SoundFonts en Android
- 10. Cómo reproducir streaming de audio/video desde una url?
- 11. Reproducir video m3u8 en android
- 12. Reproducir video en Android desde una secuencia de bytes
- 13. Reproducir video desde el estado de pausa en VideoView
- 14. ¿Cómo puedo reproducir video desde un byte en Android
- 15. Mostrar el primer cuadro de video en WPF MediaElement
- 16. WPF MediaElement se detiene cuando se trata de reproducir archivos de Windows Media Center grabación
- 17. video HTML5: reproducir solo una parte de un video
- 18. Reproducir video cifrado con AVPlayer
- 19. Reproducir recurso de video incrustado como secuencia
- 20. forma más sencilla de repetir un video en un MediaElement
- 21. ¿Cómo reproducir video usando MPMoviePlayerController?
- 22. Android: no puede reproducir video mp4
- 23. C# Capture Video Stream From Window
- 24. Reproducir transmisión de video RTP usando Qt?
- 25. ¿Es posible usar HTML5 para mostrar un video de MPEG Transport Stream?
- 26. Reproducir video de youtube en la aplicación para iPhone
- 27. ¿Cómo puedo reproducir archivos de video?
- 28. ¿Cómo reproducir el sonido MP3 desde el búfer (ByteArray/Stream) en ActionScript 3?
- 29. mediaelement.js - reproducir otro video al final del primer video
- 30. Problemas al reproducir un video con MonoTouch
¿Puedo ver un ejemplo de una aplicación WPF ejecutando VLC como un componente ActiveX? Me gustaría ver qué aspecto tiene y qué implica ponerlo en funcionamiento antes de que realmente lo haga. – rafale
Hola Stuart, podrías publicar tu ejemplo usando VLC en alguna parte para que pueda echar un vistazo. Gracias. –