我看到很多编辑艺术家和专辑信息等的解决方案,但是否有一种方法可以编辑mp3 id3数据中的歌词?虽然有一些软件可以做到这一点,但我想知道是否有一种用c#编写此功能的方法。假设我有所有音乐文件的文本文件歌词,我该如何将它们放入mp3文件中?
谢谢。
这方面没有内置的解决方案,你需要使用外部库,比如这些:
http://sourceforge.net/projects/csid3lib/
后者看起来更加完整和功能丰富。
例如,要获取文件的歌词:
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);
}
我相信在查阅这两个库的文档后,你可以找到如何分配歌词。
一些快速的谷歌搜索揭示了这一点。也许它对你有用?
using Id3.Info; using Id3.Info.ChartLyrics; using Id3.Info.LyrDb;
- CC Inc