我的 Rhythmbox 与我的 Android 手机同步得很好。它会自动将 FLAC 转码为 M4a,并保持正确的目录结构和曲目文件名。到目前为止一切顺利。
但是,同步过程不会复制专辑封面。在每个专辑目录中,我都有一个名为“cover.jpg”的文件,Rhythmbox 可以很好地使用它,但它不会传输到我的 Android SD 卡上。在 Banshee 上,专辑封面会被复制,但它有一系列令人烦恼的其他错误,使我无法使用它作为解决方法。
答案1
我有一个非常相似的设置,只是我不转码我的 flac 文件。我发现我需要使用 metaflac 将专辑封面嵌入到 flac 文件本身中:
metaflac --import-picture-from="yourcover.jpg" "你的音乐文件.flac"
您必须为此过程编写一个脚本,但我有一个 perl 脚本可供您使用,只需进行修改以匹配您的目录位置即可:
#!/usr/bin/perl
use strict;
use warnings;
my $artist;
my $album;
my $filename;
my $cover_filename;
if($#ARGV != 0)
{
print("Usage: add_album_art_flac.pl <TOP DIR>\n");
exit;
}
print("Getting artist album info...\n");
my @flac_album_artist = `find . -type f -name \"*.flac\" -exec metaflac --with-filename --show-tag=\"Artist\" --show-tag=\"Album\" {} \\\;`;
print("Got artist album info\n");
foreach my $flac_file (@flac_album_artist)
{
if($flac_file =~ /^(.+):ARTIST=(.+)$/)
{
$filename = $1;
$artist = $2;
}
elsif($flac_file =~ /^(.+):ALBUM=(.+)$/)
{
if($filename ne $1)
{
undef $artist;
print("ERROR: Failed Sanity Check. Dying...");
die;
}
elsif(defined $artist)
{
$album = $2;
$cover_filename = "/home/fred/.cache/rhythmbox/covers/$artist - $album.jpg";
print("Fetching $cover_filename...\n");
system("metaflac --import-picture-from=\"$cover_filename\" \"$filename\"");
if($? == -1)
{
print("Failed to add $cover_filename to $artist - $album\n");
}
else
{
print("Successfully added $cover_filename to $filename\n");
}
}
undef $artist;
}
else
{
print("ERROR: Bad line. Dying...\n");
die;
}
}