2013-01-13 80 views
2

我見過很多解決方案編輯藝術家和專輯信息等,但有沒有辦法編輯mp3的數據中的歌詞?有這方面的軟件,但我問是否有方法在C#中編程。假設我在所有音樂文件的文本文件中都有歌詞,我如何將它們放入mp3文件中?編輯mp3的id3歌詞數據c#

謝謝。

回答

3

有這個內部沒有內置的解決方案,你將不得不使用一個外部庫,如這些:

http://sourceforge.net/projects/csid3lib/

http://id3.codeplex.com/

後者看起來更完整且功能豐富。

例如,要獲取文件的歌詞:

string[] mp3Files = Directory.GetFiles(_mp3Directory, "*.mp3"); 

      InfoProvider chartLyricsProvider = new ChartLyricsInfoProvider(); 
      InfoProvider lyrDbLyricsProvider = new LyrDbInfoProvider(); 
      foreach (string mp3File in mp3Files) 
      { 
       Console.Write(Path.GetFileNameWithoutExtension(mp3File)); 

       Id3Tag tag; 
       using (var mp3 = new Mp3File(mp3File)) 
        tag = mp3.GetTag(Id3TagFamily.FileStartTag); 
       if (tag == null) 
        continue; 

       if (!tag.Artists.IsAssigned || !tag.Title.IsAssigned) 
       { 
        Console.WriteLine(); 
        continue; 
       } 

       Console.WriteLine(" ({0} - {1})", tag.Artists.Values[0], tag.Title.Value); 

       Id3Tag[] lyricsTags = GetLyrics(tag, chartLyricsProvider, lyrDbLyricsProvider); 
       if (lyricsTags == null || lyricsTags.Length == 0) 
        continue; 

       string outputFilename = string.Format("{0} - {1}.txt", tag.Artists.Values[0], tag.Title.Value); 
       string outputFile = Path.Combine(_outputDirectory, outputFilename); 
       using (var lyricsWriter = new StreamWriter(outputFile, false)) 
        lyricsWriter.Write(lyricsTags[0].Lyrics[0].Lyrics); 

       Console.WriteLine(" {0}", outputFilename); 
      } 

我相信通過這兩個庫的文檔看後,你可以找到如何分配的歌詞。

+0

好吧,我有點理解第一次做什麼。現在,如果我在文本中有歌詞,我想我可以將它保存到mp3文件中。但是我不明白的是如何從ChartLyrics中獲得歌詞。對我而言,它不承認InfoProvider和許多其他事情。 – weiszam

+0

但是非常感謝,至少現在我可以從某些事情開始。 – weiszam

+0

@weiszam你把所有正確的用法放在你的文件中嗎? –

0

一些快速的谷歌搜索揭示了這一點。也許它可能適合你?

http://sourceforge.net/projects/id3dotnet/

+0

看來之後我發現他們也轉移到http://id3.codeplex.com/ –

+0

我有點困惑於這個,我不知道如何導入dll的和這樣的事情,但與其他來源,我現在可以修改歌詞,所以唯一剩下的就是輕鬆下載歌詞。如果你知道一個簡單的方法.. :) – weiszam