private bool GetAPETags(int stream) { tags = Bass.BASS_ChannelGetTagsAPE(stream); if (tags != null) { for (int i = 0; i < tags.Length; i++) { frameId = tags[i].Split('=')[0]; value = tags[i].Split('=')[1]; switch (frameId) { case "Title": title = value; break; case "Artist": artist = value; break; case "Album": album = value; break; case "Comment": comment = value; break; case "Year": year = value; break; case "Genre": genre = value; break; } } BASS_TAG_APE_BINARY[] temp = Bass.BASS_ChannelGetTagsAPEBinary(stream); return(true); } return(false); }
/// <summary> /// 获得APE音乐信息 /// </summary> /// <param name="path">音乐路径</param> /// <param name="type">获得的信息类型</param> /// <returns></returns> public string GetAPEInfo(string path, GetInfoType type) { int stream = 0; string content = null; if (type != GetInfoType.FileType) { try { stream = Bass.BASS_StreamCreateFile(path, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT); string[] tags = Bass.BASS_ChannelGetTagsAPE(stream); if (tags != null) { switch (type) { case GetInfoType.Title: { foreach (string x in tags) { if (x.Contains("Title")) { content = x.Remove(0, 6); break; } else { content = null; } } //标题 break; } case GetInfoType.Artist: { foreach (string x in tags) { if (x.Contains("Artist")) { content = x.Remove(0, 7); break; } else { content = null; } } //艺术家 break; } case GetInfoType.Album: { foreach (string x in tags) { if (x.Contains("Album")) { content = x.Remove(0, 6); break; } else { content = null; } } //专辑名 break; } case GetInfoType.Year: { foreach (string x in tags) { if (x.Contains("Year")) { content = x.Remove(0, 5); break; } else { content = null; } } //年代 break; } case GetInfoType.Length: { if (Convert.ToInt32(Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream))) != -1) { content = Convert.ToString(Convert.ToInt32(Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream)))); //曲长 } else { content = "文件损坏"; MessageBox.Show("异常:不支持的格式或文件已损坏。\n错误路径:" + path); } break; } default: break; } } } catch (System.AccessViolationException) { MessageBox.Show("警告!内存溢出!程序将退出"); Application.Exit(); } } if (type == GetInfoType.FileType) { content = Path.GetExtension(path); //格式 } if (type == GetInfoType.Title && content == null) { content = Path.GetFileNameWithoutExtension(path); } return(content); }
/// <summary> /// 使用Bass获得音乐年代 /// </summary> /// <param name="stream">Bass音乐流</param> /// <param name="extension">音乐格式(扩展名)</param> /// <returns>年代</returns> private string Bass_Year(int stream, string extension) { string content = null; switch (extension) { case ".mp3": case ".m4a": case ".flac": case ".aif": case ".aac": { string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("TYER")) { content = x.Remove(0, 5); break; } } } break; } case ".ogg": { string[] tags = Bass.BASS_ChannelGetTagsOGG(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("DATE")) { content = x.Remove(0, 5); break; } else { content = null; } } } break; } case ".ape": { string[] tags = Bass.BASS_ChannelGetTagsAPE(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("Year")) { content = x.Remove(0, 5); break; } } } break; } } return(content); }
/// <summary> /// 使用Bass获得音乐专辑名 /// </summary> /// <param name="stream">Bass音乐流</param> /// <param name="extension">音乐格式(扩展名)</param> /// <returns>专辑名</returns> private string Bass_Album(int stream, string extension) { string content = null; switch (extension) { case ".mp3": case ".m4a": case ".flac": case ".aif": case ".aac": { string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("TALB")) { content = x.Remove(0, 5); break; } } } break; } case ".ogg": { string[] tags = Bass.BASS_ChannelGetTagsOGG(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("ALBUM")) { content = x.Remove(0, 6); break; } else { content = null; } } } break; } case ".ape": { string[] tags = Bass.BASS_ChannelGetTagsAPE(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("Album")) { content = x.Split(new char[] { '=' })[1]; break; } } } break; } } return(content); }
/// <summary> /// 使用Bass获得歌曲艺术家 /// </summary> /// <param name="stream">Bass音乐流</param> /// <param name="extension">音乐格式(扩展名)</param> /// <returns>艺术家</returns> private string Bass_Artist(string Path, int stream, string extension) { string content = null; switch (extension) { case ".mp3": case ".m4a": case ".flac": case ".aif": case ".aac": { string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream); string[] tags7 = Bass.BASS_ChannelGetTagsID3V1(stream); string[] tags8 = Bass.BASS_ChannelGetTagsArrayNullTermAnsi(stream, BASSTag.BASS_TAG_FLAC_CUE); string[] tags9 = Bass.BASS_ChannelGetTagsArrayNullTermAnsi(stream, BASSTag.BASS_TAG_FLAC_PICTURE); BASS_TAG_FLAC_PICTURE[] tags10 = Bass.BASS_ChannelGetTagsFLACPictures(stream); string[] tags2 = Bass.BASS_ChannelGetTagsMETA(stream); string[] tags3 = Bass.BASS_ChannelGetTagsBWF(stream); string[] tags4 = Bass.BASS_ChannelGetTagsICY(stream); string[] tags5 = Bass.BASS_ChannelGetTagsMF(stream); string[] tags6 = Bass.BASS_ChannelGetTagsRIFF(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("TPE")) { content = x.Remove(0, 5); break; } } } break; } case ".ogg": { string[] tags = Bass.BASS_ChannelGetTagsOGG(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("ARTIST")) { content = x.Remove(0, 7); break; } else { content = null; } } } break; } case ".ape": { string[] tags = Bass.BASS_ChannelGetTagsAPE(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("Artist")) { content = x.Split(new char[] { '=' })[1]; break; } } } break; } case ".dff": case ".dsf": { stream = Bass.BASS_StreamCreateFile(Path, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT); content = Bass.BASS_ChannelGetTagsDSDArtist(stream); break; } } return(content); }
/// <summary> /// 使用Bass获得音乐标题 /// </summary> /// <param name="stream">Bass音乐流</param> /// <param name="extension">音乐格式(扩展名)</param> /// <returns>标题</returns> private string Bass_Title(string Path, int stream, string extension) { string content = null; switch (extension) { case ".mp3": case ".m4a": case ".flac": case ".aif": case ".aac": { string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("TIT")) { content = x.Remove(0, 5); } break; } } break; } case ".ogg": { string[] tags = Bass.BASS_ChannelGetTagsOGG(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("TITLE")) { content = x.Remove(0, 6); break; } else { content = null; } } } break; } case ".ape": { string[] tags = Bass.BASS_ChannelGetTagsAPE(stream); if (tags != null) { foreach (string x in tags) { if (x.Contains("Title")) { content = x.Remove(0, 6); break; } } } break; } case ".dff": case ".dsf": { stream = Bass.BASS_StreamCreateFile(Path, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT); content = Bass.BASS_ChannelGetTagsDSDTitle(stream); break; } } if (content == null) { content = System.IO.Path.GetFileNameWithoutExtension(Path); } return(content); }