public bool ShouldInclude(MemoryStream stream, string track, string filter, out double duration)
        {
            if (string.IsNullOrWhiteSpace(filter))
            {
                duration = 0;

                return(true);
            }

            var flag = filter.Split(Environment.NewLine)
                       .Where(pattern => !string.IsNullOrWhiteSpace(pattern))
                       .Select(x => x.Trim())
                       .All(pattern => !Regex.Matches(track, pattern, RegexOptions.IgnoreCase).Any());

            try
            {
                var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

                var reader = new Mp3FileReader(stream.Reset(), builder);

                duration = reader.TotalTime.TotalSeconds;

                flag &= duration >= 30;
            }
            catch (Exception e)
            {
                _logger.LogError($"Stream with name '{track}' is not a valid mp3 file", e);

                flag = false;

                duration = 0;
            }

            return(flag);
        }
Beispiel #2
0
        public MusicPlayer(Stream stream)
        {
            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            _mp3FileReader = new Mp3FileReader(stream, builder);
            _waveOut       = new WaveOut();
            _waveOut.Init(_mp3FileReader);
        }
Beispiel #3
0
 public Mp3FileReader(Stream inputStream, Mp3FileReader.FrameDecompressorBuilder frameDecompressorBuilder)
 {
     if (inputStream == null)
     {
         throw new ArgumentNullException("inputStream");
     }
     try
     {
         this.mp3Stream         = inputStream;
         this.id3v2Tag          = Id3v2Tag.ReadTag(this.mp3Stream);
         this.dataStartPosition = this.mp3Stream.Position;
         Mp3Frame mp3Frame = Mp3Frame.LoadFromStream(this.mp3Stream);
         if (mp3Frame == null)
         {
             throw new InvalidDataException("Invalid MP3 file - no MP3 Frames Detected");
         }
         double num = (double)mp3Frame.BitRate;
         this.xingHeader = XingHeader.LoadXingHeader(mp3Frame);
         if (this.xingHeader != null)
         {
             this.dataStartPosition = this.mp3Stream.Position;
         }
         Mp3Frame mp3Frame2 = Mp3Frame.LoadFromStream(this.mp3Stream);
         if (mp3Frame2 != null && (mp3Frame2.SampleRate != mp3Frame.SampleRate || mp3Frame2.ChannelMode != mp3Frame.ChannelMode))
         {
             this.dataStartPosition = mp3Frame2.FileOffset;
             mp3Frame = mp3Frame2;
         }
         this.mp3DataLength      = this.mp3Stream.Length - this.dataStartPosition;
         this.mp3Stream.Position = this.mp3Stream.Length - 128L;
         byte[] array = new byte[128];
         this.mp3Stream.Read(array, 0, 128);
         if (array[0] == 84 && array[1] == 65 && array[2] == 71)
         {
             this.id3v1Tag       = array;
             this.mp3DataLength -= 128L;
         }
         this.mp3Stream.Position = this.dataStartPosition;
         this.Mp3WaveFormat      = new Mp3WaveFormat(mp3Frame.SampleRate, (mp3Frame.ChannelMode == ChannelMode.Mono) ? 1 : 2, mp3Frame.FrameLength, (int)num);
         this.CreateTableOfContents();
         this.tocIndex           = 0;
         num                     = (double)this.mp3DataLength * 8.0 / this.TotalSeconds();
         this.mp3Stream.Position = this.dataStartPosition;
         this.Mp3WaveFormat      = new Mp3WaveFormat(mp3Frame.SampleRate, (mp3Frame.ChannelMode == ChannelMode.Mono) ? 1 : 2, mp3Frame.FrameLength, (int)num);
         this.decompressor       = frameDecompressorBuilder(this.Mp3WaveFormat);
         this.waveFormat         = this.decompressor.OutputFormat;
         this.bytesPerSample     = this.decompressor.OutputFormat.BitsPerSample / 8 * this.decompressor.OutputFormat.Channels;
         this.decompressBuffer   = new byte[1152 * this.bytesPerSample * 2];
     }
     catch (Exception)
     {
         if (this.ownInputStream)
         {
             inputStream.Dispose();
         }
         throw;
     }
 }
Beispiel #4
0
        public MusicPlayer(byte[] fileBytes)
        {
            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            _stream        = new MemoryStream(fileBytes);
            _mp3FileReader = new Mp3FileReader(_stream, builder);
            _waveOut       = new WaveOut();
            _waveOut.Init(_mp3FileReader);
        }
Beispiel #5
0
        private static TimeSpan GetAudioFileLength(HttpPostedFileBase fileBase)
        {
            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            using (var mp3Reader = new Mp3FileReader(fileBase.InputStream, builder))
            {
                return(mp3Reader.TotalTime);
            }
        }
Beispiel #6
0
        public void PlayAudio()
        {
            string fileName = "myMp3File.mp3";
            var    builder  = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));
            var    reader   = new Mp3FileReader(fileName, builder);

            // play or process the file, e.g.:
            _WaveOut.Init(reader);
            _WaveOut.Play();
        }
Beispiel #7
0
        public void Open()
        {
            stw = new Stopwatch();
            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            reader = new Mp3FileReader(Read(), builder);
            //reader = new Mp3FileReader(Read());
            duration = 0;
            stw.Start();
        }
Beispiel #8
0
        public static Mp3FileReader GetMp3AudioFromURL(this string url)
        {
            Stream ms = new MemoryStream();

            using (Stream stream = WebRequest.Create(url).GetResponse().GetResponseStream())
                stream.CopyTo(ms);
            ms.Position = 0;

            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            return(new Mp3FileReader(ms, builder));
        }
        public AudioPlayer(Resource resource, TabPage tab)
        {
            var soundData = (Sound)resource.Blocks[BlockType.DATA];

            var stream = soundData.GetSoundStream();

            waveOut = new WaveOutEvent();

            try
            {
                if (soundData.Type == Sound.AudioFileType.WAV)
                {
                    var rawSource = new WaveFileReader(stream);
                    waveOut.Init(rawSource);
                }
                else if (soundData.Type == Sound.AudioFileType.MP3)
                {
                    var builder   = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));
                    var rawSource = new Mp3FileReader(stream, builder);
                    waveOut.Init(rawSource);
                }
                else if (soundData.Type == Sound.AudioFileType.AAC)
                {
                    var rawSource = new StreamMediaFoundationReader(stream);
                    waveOut.Init(rawSource);
                }

                playButton           = new Button();
                playButton.Text      = "Play";
                playButton.TabIndex  = 1;
                playButton.Size      = new Size(100, 25);
                playButton.Click    += PlayButton_Click;
                playButton.Disposed += PlayButton_Disposed;

                tab.Controls.Add(playButton);
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e);

                var msg = new Label
                {
                    Text = $"NAudio Exception: {e.Message}",
                    Dock = DockStyle.Fill,
                };

                tab.Controls.Add(msg);
            }
        }
Beispiel #10
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var waveOut = new WaveOutEvent();
            var file    = @"untitled.mp3";
            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            var mp3Reader = new Mp3FileReader(file, builder);

            //BufferedWaveProvider buffer = new BufferedWaveProvider(WaveFormat.)
            waveOut.Init(mp3Reader);
            waveOut.Play();

            Console.Read();
        }
Beispiel #11
0
 public Mp3FileReader(string mp3FileName, Mp3FileReader.FrameDecompressorBuilder frameDecompressorBuilder) : this(File.OpenRead(mp3FileName), frameDecompressorBuilder)
 {
     this.ownInputStream = true;
 }
Beispiel #12
0
        private static Mp3FileReader GetMp3FileReaderFromFilePath(string filePath)
        {
            var builder = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf));

            return(new Mp3FileReader(filePath, builder));
        }
Beispiel #13
0
 public Mp3FileReader(Stream inputStream, Mp3FileReader.FrameDecompressorBuilder frameDecompressorBuilder) : this(inputStream, frameDecompressorBuilder, false)
 {
 }
Beispiel #14
0
 public Mp3FileReader(string mp3FileName, Mp3FileReader.FrameDecompressorBuilder frameDecompressorBuilder) : this(File.OpenRead(mp3FileName), frameDecompressorBuilder, true)
 {
 }