Moriafly / SaltPlayerSource

Salt Player for Android Release, Feedback
GNU General Public License v3.0
4.2k stars 119 forks source link

FLAC文件具有多个艺术家时无法正确分割 #460

Open Sanheiii opened 1 year ago

Sanheiii commented 1 year ago

基本信息 The basic information

软件版本:8.2.4-play 系统版本 :一加Ace竞速版,Color OS 12.1 | Android 12 | PGZ110_11_A.08

反馈内容 Content of the feedback

我为FLCA文件填入多位艺术家,Windows属性与foobar中已正确显示,椒盐音乐中”;“被去掉,其余部分被合并为同一艺术家

image

image

image


我使用lame.exe将其转换为MP3文件后,椒盐音乐就可以正常识别多位艺术家

image


将这个MP3文件使用flac.exe再次转换为FLAC文件后,椒盐音乐与最初的行为一致,无法正常分割艺术家

Moriafly commented 1 year ago

可以提供下 flac 文件吗

Sanheiii commented 1 year ago

01. No Limit RED Force.flac

Sanheiii commented 1 year ago

可以提供下 flac 文件吗

昨天发了文件链接,我不确定没有引用会不会提醒,看到的话请回复一下

Sanheiii commented 1 year ago

我使用音乐标签APP打开文件,修改歌词并保存,使用"; "分割的艺术家们在Windows中被显示为同一位,在椒盐音乐中可以正常分割。 image image 在Windows下尝试编辑标签不作任何修改并保存,他们再次被分割为Windows能够正常分割,椒盐音乐不能分割的状态。 image 我猜测FLAC保存艺术家时并不是真正的保存了一个使用"; "分割的字符串,而是存在某种分割符,椒盐音乐识别FLAC的艺术家时尝试使用"; "来分割, 分割符被忽略产生了一个使用空格连接的单个艺术家

Moriafly commented 1 year ago

https://github.com/taglib/taglib/pull/947

Sanheiii commented 1 year ago

我自行编译了taglib使用如下代码进行测试

#include <taglib/flacfile.h>
#include <taglib/oggflacfile.h>
int main()
{
    std::cout << "Hello World!\n"; 
    TagLib::FLAC::File f("D:\\Library\\Desktop\\01. No Limit RED Force.flac");
    TagLib::String a1 = f.tag()->artist();
    TagLib::StringList a2 = f.xiphComment()->fieldListMap()["ARTIST"];
}

在a2中得到了理想的结果 image

Moriafly commented 1 year ago

好像如果使用 TPE1 / TPE2 这样的标签也会有这个问题,我最近看看代码怎么写比较好哈~

Moriafly commented 1 year ago

364

Sanheiii commented 1 year ago

好像如果使用 TPE1 / TPE2 这样的标签也会有这个问题,我最近看看代码怎么写比较好哈~

我自行编译了taglib使用如下代码进行测试

#include <taglib/flacfile.h>
#include <taglib/oggflacfile.h>
int main()
{
    std::cout << "Hello World!\n"; 
    TagLib::FLAC::File f("D:\\Library\\Desktop\\01. No Limit RED Force.flac");
    TagLib::String a1 = f.tag()->artist();
    TagLib::StringList a2 = f.xiphComment()->fieldListMap()["ARTIST"];
}

在a2中得到了理想的结果 image

前面已经给了能正确获取的代码, 可以作为参考吗