elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Escuchar música desde que ejecute la consola y dentro de un array tipo Byte.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Escuchar música desde que ejecute la consola y dentro de un array tipo Byte.  (Leído 278 veces)
Meta


Desconectado Desconectado

Mensajes: 3.203



Ver Perfil WWW
Escuchar música desde que ejecute la consola y dentro de un array tipo Byte.
« en: 25 Febrero 2019, 23:21 »

Hola:

Código que creo que se puede hacer es algo así.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Musica_consola_01_cs
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            #region Música.
  14.            /* Posición Inicial: 00000000, Posición Final: 00001891, Longitud: 00001892 */
  15.  
  16. // Pongo pocos bytes para no agrandar el tema en el foro.
  17.  
  18.            byte[] rawData = {
  19.    0x4D, 0x54, 0x68, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x08
  20. };
  21.  
  22. #endregion
  23.  
  24.            var c1 = new System.Windows.Media.MediaPlayer();
  25.            c1.Open(new System.Uri(rawData));
  26.            c1.Play();
  27.        }
  28.    }
  29. }


Me da este error.

Gravedad    Código    Descripción    Proyecto    Archivo    Línea    Estado suprimido
Error    CS0234    El tipo o el nombre del espacio de nombres 'Media' no existe en el espacio de nombres 'System.Windows' (¿falta alguna referencia de ensamblado?)    Musica_consola_01_cs    C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Musica_consola_01_cs\Musica_consola_01_cs\Program.cs    545    Activo

No encuentro en referencia el Media.

¿Alguna idea?

Saludos.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Escuchar música desde que ejecute la consola y dentro de un array tipo Byte.
« Respuesta #1 en: 26 Febrero 2019, 00:30 »

No encuentro en referencia el Media.

Me resulta inverosimil que a estas alturas despues de años programando en C# necesites ayuda para resolver este tipo de duda tan básica...




También deberías añadir una referencia al ensamblado WindowsBase.dll y System.Windows.dll para así poder acceder al instrumental básico de la librería de clases de WPF.



Código
  1. // Pongo pocos bytes para no agrandar el tema en el foro.
  2.  
  3.            byte[] rawData = {
  4.    0x4D, 0x54, 0x68, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x08
  5. };

¿Esos bytes se supone que son los bytes raw de un archivo de sonido, o que cosa sinó?. En cualqueir caso, la clase System.Windows.Media.MediaPlayer no te va a servir para eso, ya que no acepta un array de bytes o stream, así que primero debes volcar los bytes a un archivo local, y entonces especificar la ruta de dicho archivo en la propiedad MediaPlayer.Source.
Ahora no me vayas a decir que no sabes como crear un archivo con esos bytes, deberías saberlo ya, pero bueno, por si acaso: File.WriteAllBytes(String, Byte[]) - Microsoft Docs o también: FileStream Class (System.IO) | Microsoft Docs.

Como alternativa puedes usar la clase System.Media.SoundPlayer, la cual provee una propiedad SoundPlayer.Stream que te permitirá asignar un objeto de tipo MemoryStream (donde puedes escribir ese array de bytes que tienes), es decir sin necesidad de volcar esos bytes a un archivo local, pero esta clase está limitada a reproducir archivos de sonido WAV (no MP3 ni ningún otro formato).

EDITO:
Acabo de recordar que con la API nativa de MCI (Media Control Interface) también puedes repoducir archivos de audio MP3 (y WAV y MIDI)...
pero esto requiere escribir muchos P/Invokes para luego escribir un wrapper, y creo que dicha API no soporta la reproducción desde un bloque de memoria...

Ahí tienes dos tres opciones. Saludos.


« Última modificación: 26 Febrero 2019, 02:19 por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines