public void CargarCancion(string cual) { switch (Path.GetExtension(cual)) { case ".mp3": CSCore.Tags.ID3.ID3v2 mp3tag = CSCore.Tags.ID3.ID3v2.FromFile(cual); tags = new CSCore.Tags.ID3.ID3v2QuickInfo(mp3tag); FormatoSonido = FormatoSonido.MP3; break; case ".flac": _ficheroFLAC = new FLACFile(cual, true); CSCore.Codecs.FLAC.FlacFile ff = new CSCore.Codecs.FLAC.FlacFile(cual); FormatoSonido = FormatoSonido.FLAC; break; case ".ogg": FormatoSonido = FormatoSonido.OGG; break; default: break; } try { Log.Instance.ImprimirMensaje("Intentando cargar " + cual, TipoMensaje.Info); if (Path.GetExtension(cual) == ".ogg") { FileStream stream = new FileStream(cual, FileMode.Open); NVorbis = new NVorbisSource(stream); _sonido = NVorbis.ToWaveSource(16); } else { _sonido = CSCore.Codecs.CodecFactory.Instance.GetCodec(cual).ToSampleSource().ToStereo().ToWaveSource(16); notificationStream = new SingleBlockNotificationStream(_sonido.ToSampleSource()); //_salida.Initialize(notificationStream.ToWaveSource(16)); FileInfo info = new FileInfo(cual); tamFich = info.Length; } _salida = new WasapiOut(false, AudioClientShareMode.Shared, 100); _sonido.Position = 0; _salida.Initialize(_sonido); Log.Instance.ImprimirMensaje("Cargado correctamente" + cual, TipoMensaje.Correcto); } catch (IOException) { Log.Instance.ImprimirMensaje("No se puede reproducir el fichero porque está siendo utilizado por otro proceso", TipoMensaje.Error); throw; } catch (Exception) { Log.Instance.ImprimirMensaje("No se encuentra el fichero", TipoMensaje.Advertencia); throw; } }
public LectorMetadatos(string s) { switch (Path.GetExtension(s)) { case ".mp3": ID3v2 mp3tag = ID3v2.FromFile(s); _mp3iD3 = new ID3v2QuickInfo(mp3tag); Artista = _mp3iD3.LeadPerformers; Titulo = _mp3iD3.Title; break; case ".flac": _FLACfile = new FLACFile(s, true); Artista = _FLACfile.ARTIST; Titulo = _FLACfile.TITLE; break; case ".ogg": _vorbisReader = new VorbisReader(s); foreach (String meta in _vorbisReader.Comments) { if (meta.Contains("TITLE=")) { Titulo = meta.Replace("TITLE=", ""); } else if (meta.Contains("TITLE=".ToLower())) { Titulo = meta.Replace("title=", ""); } } foreach (String meta in _vorbisReader.Comments) { if (meta.Contains("ARTIST=")) { Artista = meta.Replace("ARTIST=", ""); } else if (meta.Contains("ARTIST=".ToLower())) { Artista = meta.Replace("artist=", ""); } } Cerrar(); break; default: break; } }