编辑MP3 ID3歌词数据 C#

3

我看到很多编辑艺术家和专辑信息等的解决方案,但是否有一种方法可以编辑mp3 id3数据中的歌词?虽然有一些软件可以做到这一点,但我想知道是否有一种用c#编写此功能的方法。假设我有所有音乐文件的文本文件歌词,我该如何将它们放入mp3文件中?

谢谢。

2个回答

4

这方面没有内置的解决方案,你需要使用外部库,比如这些:

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);
            }

我相信在查阅这两个库的文档后,你可以找到如何分配歌词。


好的,我有点理解第一个是做什么的。现在如果我有歌词的文本,我想我可以将其保存到mp3文件中。但我不明白的是如何从ChartLyrics那里获取歌词。对我来说,它并没有识别出 InfoProvider 和许多其他东西。 - weiszam
但是非常感谢到目前为止,至少现在我可以开始做些什么了。 - weiszam
我该怎么做呢?(抱歉,我不习惯使用外部库。) - weiszam
首先,添加对dll的引用,然后在我们的文件顶部添加以下内容:using Id3.Info; using Id3.Info.ChartLyrics; using Id3.Info.LyrDb; - CC Inc
我从http://id3.codeplex.com/添加了dll,现在可以使用Id3.Info,但无法使用ChartLyrics和LyrDb。现在该怎么办? - weiszam
@weiszam我们能[在聊天中继续吗?](http://chat.stackoverflow.com/rooms/7/c) - CC Inc

0

我有点困惑,不知道如何导入dll等文件,但是通过其他源代码,现在我可以修改歌词了,所以唯一剩下的就是轻松下载歌词。如果你知道简单的方法.. :) - weiszam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接