¡Buenas!
Estoy desarrollando una aplicación que estoy intentando que sea multiplataforma. La idea es hacerla funcionar sobre mono para que no de problemas, pero por algún extraño motivo las SdlDotNet me están amargando la vida ^^U
Tengo el siguiente código:
using System;
using System.IO;
using System.Threading;
using SdlDotNet;
using SdlDotNet.Audio;
using SdlDotNet.Core;
namespace foo{
public class mp3prueba{
public static void Main(string []args){
if(args.Length != 1)
return;
string path = args[0];
if(File.Exists(path)){
Music mp3 = new Music(path);
MusicPlayer.Volume = 99;
mp3.Play();
for(int i = 0; i < 5; i++){
Console.Write("{0}.. ", i+1);
Thread.Sleep(1000);
}
Console.WriteLine("");
}
else
Console.WriteLine("No hay fichero");
}
}
}
El código pide un fichero y lee el path. Si existe, reproduce el fichero durante 5 segundos. O al menos debería. Ahora, mi problema es que a veces sí, a veces no, da problemas con ciertos mp3 (adjunto junto al código uno de los que me producen el error). No escupe ningún tipo de error pero, o no reproduce completamente el fichero (comienza y se corta, que lo hace pocas veces) o no produce ningún sonido (que es lo que suele pasar) o (escasas veces) lo reproduce. Es completamente aleatorio. No he conseguido ver ningún patrón de las veces que suena a las que no. Ni tan siquiera esperando un cierto tiempo consigo que funcione (pensé que podía quedarse alguna instancia por ahí viva y hubiese que esperar a que el recolector de basura la eliminase, pero ni por esas).
El problema viene en Windows, ya que ni en Mac ni en Linux me da problemas. La cuestión es que tampoco escupe ningún error por pantalla, simplemente no lo reproduce, así que estoy algo perdido.
Creo que puede tener que ver con algún tipo de problema con la SDL.dll, pero he probado a cambiarla y a utilizar una versión diferente y nada (y digo esto por que, los ficheros ogg, que debería reproducirlos sin problemas, dan este mismo problema si no está en el mismo directorio del ejecutable el fichero SDL.dll y libvorbis.dll).
He probado poniendo, quitando, cambiando de nombre y todo lo que se me ha ocurrido con las dll que parece que son necesarias, pero no hay manera.
Estoy probandolo sobre Windows XP con Mono 2.10.2 y la versión 6.1.1 Beta de las SdlDotNet (he probado con versiones anteriores, pero ocurre el mismo problema).
¿Alguna idea o algún sitio por el que mirar? Aunque sean cávalas ^^U Cualquier idea es bien recibida.
¡Un saludo y muchas gracias de antemano!
PD: Adjunto el código sin el ejecutable y el MP3 que me falla. Hay un Makefile para quien quiera probar a compilarlo y ejecutarlo. (
Link)