Clementine 不播放名称中含有某些字符的文件

Clementine 不播放名称中含有某些字符的文件

上周我用 morituri 和 rhythmbox 翻录了一些 CD。除了一张 CD 之外,其他都很好。翻录几首曲目后,我在用 morituri 翻录(到 FLAC)时遇到了一些奇怪的错误,所以我用 rhythmbox 翻录了该 CD 的其余部分。

之后,Clementine 无法播放我从 CD 中翻录的曲目(以及用 morituri 翻录的曲目和用 rhythmbox 翻录的曲目)。Clementine 表现得好像它们不在我的库中。但是,使用 Rhythmbox,我可以完美播放所有曲目。

我从朋友那里得到的一些 mp3 文件也遇到了同样的问题。我可以在 Rhythmbox 中播放它们,但 Clementine 却像它们不存在一样。

我该如何让它再次正常工作?我已经尝试重新安装它,删除配置文件,删除从存储库安装的配置文件,并从 www.clementine-player.org 安装最新版本

注意:Clementine 可以完美播放我翻录的其他 CD 以及我的其他音乐库(大部分为 FLAC,一些文件为 mp3)。

我不知道我可以提供哪些额外的信息,但请随时询问。

编辑:当在终端中运行 clementine 然后尝试播放其中一个“有问题的”曲目时,我收到以下消息:

11:36:48.542 INFO  MoodbarLoader:144                Creating moodbar data for "/home/user138784/Music/Stromae/Racine Carrée/01.Ta fête.flac" 
11:36:48.546 ERROR MoodbarPipeline:134              Error processing  QUrl( "file:///home/user138784/Music/Stromae/Racine Carrée/01.Ta fête.flac" )  : "Resource not found." 
11:36:48.546 ERROR MoodbarPipeline:134              Error processing  QUrl( "file:///home/user138784/Music/Stromae/Racine Carrée/01.Ta fête.flac" )  : "Resource not found." 
11:36:48.571 ERROR GstEnginePipeline:563            2 "gstfilesrc.c(1042): gst_file_src_start (): /GstPipeline:pipeline/GstURIDecodeBin:uridecodebin-15/GstFileSrc:source:
No such file "/home/user138784/Music/Stromae/Racine Carrée/01.Ta fête.flac"" 
11:36:48.572 ERROR GstEnginePipeline:563            2 "gstfilesrc.c(1042): gst_file_src_start (): /GstPipeline:pipeline/GstURIDecodeBin:uridecodebin-15/GstFileSrc:source:
No such file "/home/user138784/Music/Stromae/Racine Carrée/01.Ta fête.flac"" 
11:36:48.681 WARN  GstEngine:572                    Gstreamer error: "Resource not found." 
11:36:48.684 WARN  unknown                          QTimeLine::start: already running 

我认为问题可能与文件路径中使用的某些字符有关。例如,无法播放专辑“Racine Carrée”,以及“Goran Bregović”的歌曲。因为我正在使用甜菜为了组织我的音乐,此路径是自动创建的。也许我可以编辑我的 Beets 配置文件以排除特殊字符。

我正在使用 Ubuntu 13.10

编辑:该locale命令返回以下输出:

LANG=en_US
LANGUAGE=en_GB
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=

答案1

这太奇怪了。“节日快乐”或者“节日”,UTF-8 语言环境系统应该能够正常打开它们,不会出现问题。我刚刚在 Ubuntu 13.10 的新副本上安装了 Clementine,并且无论我如何更改其路径名,测试音频文件都可以正常播放。
我知道这听起来很蠢,但是你能试着通过locale在终端中输入来检查你当前的语言环境吗?我怀疑这不是问题所在,但检查一下也没什么坏处。

尝试locale -a查看你的系统上是否有en_US.UTF-8en_GB.UTF-8。如果可用,你需要通过键入sudo gedit /etc/default/locale终端来打开你的语言环境配置文件,并将所有内容更改为使用英文版.UTF-8(和 LANG 到英文版GB.UTF-8如果您想要的是英国英语)。

我认为单独使用 LANG 应该就可以了,因此您的语言环境配置文件应该是这样的:

LANG = “en_GB.UTF-8”

此后,重新启动系统并尝试再次播放文件。

请查看此处以了解更多信息:
https://help.ubuntu.com/community/Locale#Changing_settings_permanently

如果编辑 /etc/default/locale 不起作用:

首先尝试手动生成并重新配置当前的语言环境包:

sudo locale-gen
sudo dpkg-reconfigure locales

然后安装语言包以确保语言环境确实存在(以防万一):

sudo apt-get install language-pack-en-base

然后,从系统中打开“语言支持”,尝试将“英语(美国)”拖到顶部,并将其应用于整个系统。注销并重新登录,locale在终端中运行以查看更改是否适用。如果有效,那就太好了。但如果手动编辑语言环境文件失败,它可能也不会起作用,因此请sudo gedit /etc/environment在终端中尝试,并在 PATH 后添加以下内容:

LANG="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

保存并重新启动以查看是否生效。locale如果成功,您应该看到这次输出正确,否则,您的系统将从其他位置获取区域设置。

如果你的系统语言环境仍无法使用 UTF-8,

sudo gedit etc/bash.bashrc

将其添加到最后一行(注意不要编辑其他任何内容):

# Forcing locale to en_US.UTF-8
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"

保存并重新启动。

答案2

我猜,问题确实是由文件名或路径中的特殊字符引起的。更改这一点可以解决问题。

当然,更好的解决方案是让 clementine 正确读取特殊字符,但我还没有找到如何做到这一点,也许这是一个错误。

编辑:我可能是这个错误

edit2:再想想,我认为不是,因为 Ubuntu 使用的是 UFT-8(如果我没记错的话,我对这个东西了解不多)

答案3

看来 Clementine 用文件名生成了 URI。URI 中不允许有空格,即使使用 UTF-8 也是如此。需要用 进行转义%20。其他特殊字符也应该进行转义

您可以尝试用下划线、连字符等替换文件名中的空格,并用默认的拉丁字符é等特殊字符替换,例如。êe

如果您对文件和文件夹名称执行此操作,这不会影响内容在 Clementine 中的显示方式 - 这是从允许此类字符的 ID3 标签中读取的。因此,重命名这些内容并重新加载您的 Clementine 库。这应该可以解决问题。

解释一下 UTF-8 与 ASCII 的区别:

Ubuntu 默认使用 UTF-8(至少据我所知),但 URI 仅使用 ASCII,因此每个 Unicode 字符(例如é,其大小是 ASCII 的两倍)都被解释为两个 ASCII 字符:é

相关内容