Autor
|
Tema: C# Problemas con filtros de archivos de musica, solo permite .wav (Leído 13,282 veces)
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
Hola a todos... espero que me puedan ayudar, si no saben, pero por lo menos saben donde me podrian ayudar, les agradeceria que postearan un link a otro foro o algo por el estilo. Les expongo mi problema: Estoy haciendo un despertador en c#, lo unico que me falta es hacer que el programa reproduzca un archivo de audio especificado por el usuario. (Voy a mostrar las partes de codigo en especifico, pero si necesitan mas codigo para lograr una solucion, no tengo problemas en postearlo) Invoco a un reproductor: private System.Media.SoundPlayer musica = new System.Media.SoundPlayer(); Le agrego un openFileDialog y lo llamo archivo y agrego el filtro (empiezan los problemas): private void button1_Click(object sender, EventArgs e) {
archivo.Filter = "Solo archivos .wav |*.wav"; if (archivo.ShowDialog() == DialogResult.OK) { archivoDeAlarma = archivo.FileName; txtArchivoAlarma.Text = archivoDeAlarma; } } Donde el button1 es el que dice Examinar. El problema de raiz está acá ya que me veo obligado a usar archivos .wav ya que al invocar musica.PlayLoops() me dice que es para archivos .wav y nada más, al igual que musica.Play(). Entonces acá va mi pregunta:¿¿ Como hago para que pueda reproducir un archivo mp3?? o midi?
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
BADBYTE-K
Knowledge is power, Diesel-K
Desconectado
Mensajes: 2.329
Aprende todo lo que este a tu alkance
|
Hola Tu problema empieza debido a la limitacion que te provee el mismo .net framework con la clase SoundPlayer que estas usando , ya que esta especificada solo para la reproduccion de archivos .wav Entonces lo que debes hacer es cambiar todo el modelo de la reproduccion del audio de tu despertador si es que deseas lograr reproducir mp3's Puedes hacerlo de varias formas, la mas facil es haciendo uso de interoperabilidad COM haciendo referencia al componente "ActiveMovie COM" (C:\WINDOWS\system32\quartz.dll) Aqui te pego el codigo para que veas como es el funcionamiento basico de dicho componente: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using QuartzTypeLib;
namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
}
private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Media Files|*.wav;*.mp3;*.mp2;*.wma|All Files|*.*"; if (DialogResult.OK == openFileDialog.ShowDialog()) { QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); QuartzTypeLib.IMediaControl mediacontrol = (QuartzTypeLib.IMediaControl)graphManager;
mediacontrol.RenderFile(openFileDialog.FileName); mediacontrol.Run(); } } } } Ese codigo es el standar para el uso del componente lo encuentras en libros, webs, etc. pruebalo y veras como funciona la reproduccion. sigue estos detalles por si tienes problemas al compilar: Crea un nuevo proyecto windows C# Agrega una referencia al componente Agrega un boton al formulario agrega un OpenFileDialog para los detalles de la programacion del componente, lo encuentras en cualquier sitio de la red, avisa en caso de dudas. Y con respecto a otras formas, pues podrias hacerlo jugando con api's pero es mas trabajoso. saludos!
|
|
« Última modificación: 2 Junio 2006, 07:35 am por BADBYTE-K »
|
En línea
|
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
Hey men, muchas gracias por la respuesta, pero mira lo que pasó: public partial class Form1 : Form { string archivoDeAlarma; private DateTime alarmaHora; bool alarmaHabilitada; public QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); public QuartzTypeLib.IMediaControl mediacontrol = (QuartzTypeLib.IMediaControl)graphManager;
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) {
archivo.Filter = "Media Files|*.wav;*.mp3;*.mp2;*.wma|All Files|*.*"; if (archivo.ShowDialog() == DialogResult.OK) { mediacontrol.RenderFile(archivo.FileName); mediacontrol.Run(); archivoDeAlarma = archivo.FileName; txtArchivoAlarma.Text = archivoDeAlarma; } }
Me destaca public QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); public QuartzTypeLib.IMediaControl mediacontrol = (QuartzTypeLib.IMediaControl)graphManager; Dice: Error 1 A field initializer cannot reference the nonstatic field, method, or property 'WindowsApplication1.Form1.graphManager' C:\Documents and Settings\pietro\Mis documentos\Visual Studio 2005\Projects\Despertador\Despertador\Form1.cs 18 88 Despertador A ver si me indican que hago mal...
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
hey... estaba pensando en el programa y se me ocurrio: ¿Se puede hacer que cuando sea la hora de despertar el programa le suba el volumen al pc? como se hace desde la barra inicio o el panel de control. Si es que se puede, ojalá me puedan orientar a algun lado para estudiar.
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
BADBYTE-K
Knowledge is power, Diesel-K
Desconectado
Mensajes: 2.329
Aprende todo lo que este a tu alkance
|
Aqui te adjunto todo el proyecto para que no tengas problemas
saludos
|
|
|
En línea
|
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
Men no sabes cuanto agradezco tu paciencia . El programa anda perfecto . Solo me falta agregar que controlador en el cual el usuario indique el volumen del despertador. Entonces cuando sea la hora el volumen sube y se reproduce la cancion. Realizado esto, posteo el codigo para que opinen, ayuden y aporten como optimizar código, segun yo... está bien.
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
última pregunta... ya que nadie supo como subir el volumen de los parlantes . El programa funciona de lujo... y ahora como hago para que el programa no dependa del framework?¿? Disculpen la ignorancia pero soy un aprendiz
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
BADBYTE-K
Knowledge is power, Diesel-K
Desconectado
Mensajes: 2.329
Aprende todo lo que este a tu alkance
|
Hola.
Lo que tu quieres hacer no es posible, ya que el .net framework es como el corazon de la ejecucion de tu aplicacion, es como un gran repositorio del cual tu app se apoyara en todo sentido. como biblioteca, rutinas, seguridad, etc.
Solo cuentanos, porque deseas una independencia del .net framework? cuenta con confianza, que aqui todos estamos para aprender.
saludos
|
|
|
En línea
|
|
|
|
JuszR
Desconectado
Mensajes: 2.866
Programming & RI
|
El programa funciona de lujo... y ahora como hago para que el programa no dependa del framework?¿? Disculpen la ignorancia pero soy un aprendiz Es imposible. Es como que las aplicaciones en Java se ejecuten sin el JVM o las de Vb6 sin el msvbvm60.dll. Solo cuentanos, porque deseas una independencia del .net framework? cuenta con confianza, que aqui todos estamos para aprender.
Por lo de siempre. No todos tienen banda ancha y el .Net Framework ocupa como 30Mb. Difícilmente el usuario ya lo tendrá instalado, a menos que tenga GNU/Linux con una distro como Suse donde MONO se instala fácil desde los cd's. Es la desventaja de programar en lenguajes fuera de C, C++ y Asm.
|
|
|
En línea
|
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
Solo cuentanos, porque deseas una independencia del .net framework? cuenta con confianza, que aqui todos estamos para aprender.
.Net Framework ocupa como 30Mb. Difícilmente el usuario ya lo tendrá instalado Es la desventaja de programar en lenguajes fuera de C, C++ y Asm. Por eso mismo XD, casi nadie tiene el .netframework... a menos que programe en .NET
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
La extensión 'Gee! No Evil' para Firefox permite neutralizar los filtros ...
Noticias
|
wolfbcn
|
1
|
2,519
|
16 Junio 2011, 10:53 am
por .:UND3R:.
|
|
|
Red wifi que solo permite ciertas IP
Hacking Wireless
|
Ferbous
|
8
|
4,580
|
16 Noviembre 2011, 15:18 pm
por Ferbous
|
|
|
problemas con mi router, se reinicia solo cuando subo archivos x ftp
Redes
|
jann
|
0
|
2,709
|
30 Diciembre 2011, 03:23 am
por jann
|
|
|
Nuevo sistema permite reventa de música en MP3
Noticias
|
wolfbcn
|
0
|
1,459
|
9 Febrero 2012, 23:15 pm
por wolfbcn
|
|
|
AutoRadios y USB problemas música
Multimedia
|
Superplay
|
1
|
4,951
|
30 Octubre 2016, 09:30 am
por bettu
|
|