Exemplo n.º 1
0
 static void ConvertToMP3(string sourceFilename, string targetFilename)
 {
     using (var reader = new NAudio.Wave.AudioFileReader(sourceFilename))
         using (var writer = new NAudio.Lame.LameMP3FileWriter(targetFilename, reader.WaveFormat, NAudio.Lame.LAMEPreset.STANDARD))
         {
             reader.CopyTo(writer);
         }
 }
        private static void WmaToMp3(XConvertJob param)
        {
            var targetFilename = param.SourceFileName.GenerateOutPutPath(XFileType.Mp3);

            if (param.SourceData != null)
            {
                File.WriteAllBytes(param.SourceFileName, param.SourceData);
            }
            using (var reader = new NAudio.Wave.AudioFileReader(param.SourceFileName))
                using (var writer = new NAudio.Lame.LameMP3FileWriter(targetFilename, reader.WaveFormat, NAudio.Lame.LAMEPreset.STANDARD))
                {
                    reader.CopyTo(writer);
                }
            param.ResulFileName = targetFilename;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 노래 다운로드 (사운드만 추출해서 다운)
        /// </summary>
        /// <param name="videoId">비디오 고유 아이디</param>
        /// <param name="videoName">비디오 제목</param>
        public async void Download(string videoId, string videoName)
        {
            try
            {
                var youtube        = new YoutubeClient();
                var streamManifest = await youtube.Videos.Streams.GetManifestAsync(videoId);

                var   streamInfo = streamManifest.GetAudioOnly().WithHighestBitrate();
                Regex pattern    = new Regex(@"[\/:*?<>|]");
                videoName = pattern.Replace(videoName, string.Empty);
                string path = AppDomain.CurrentDomain.BaseDirectory + @"playlist\";


                if (streamInfo != null)
                {
                    await youtube.Videos.Streams.DownloadAsync(streamInfo, path + videoName + ".webm");

                    await Task.Run(() =>
                    {
                        using (var reader = new NAudio.Wave.AudioFileReader(path + videoName + ".webm"))
                        {
                            using (var writer = new NAudio.Lame.LameMP3FileWriter(path + videoName + ".prepareMp3", reader.WaveFormat, NAudio.Lame.LAMEPreset.STANDARD))
                            {
                                reader.CopyTo(writer);
                            }
                        }

                        // 변환 도중에 사용자가 음악 재생을 클릭했을때 IOException이 나는것을 방지하기 위해
                        // 확장명을 일부러 다르게 써서 mp3 파일로 변환이 끝나면 확장명을 바꿔준다.
                        File.Move(path + videoName + ".prepareMp3", path + videoName + ".mp3");
                        File.Delete(path + videoName + ".webm");
                        File.Delete(path + videoName + ".prepareMp3");
                    });
                }
            }

            catch
            {
                alert();
            }
        }