Python 有若干库可以对 flac 文件进行处理,做一个简单介绍
flac 分段
比较老的 flac 文件,一张 CD 会是一整个文件,里边也分了很多首歌,通常跟随 flac 文件,还会有一个 .cue
文件,文件会对整个 flac 的音轨分布进行记录。
准备工作:
# 安装 FFCueSplitter
pip install ffcuesplitter
# 根据系统情况,安装 ffmpeg
apt install ffmpeg
# 安装进度条可视化工具
pip install tqdm
代码
from ffcuesplitter.cuesplitter import FFCueSplitter
import subprocess
import tqdm
# 解析 cue 文件数据
cue_data = FFCueSplitter(
filename='cue 文件的路径+名称',
ffmpeg_cmd='ffmpeg 执行文件路径,默认就是 ffmpeg',
# 更多参数可以参考文档:
# https://github.com/jeanslack/FFcuesplitter/wiki/Usage-from-Python/#ffcuesplitter
)
# 获取音轨信息
tracks = cue_data.audiotracks
# 根据音轨生成 ffmpeg 指令
commands = getdata.commandargs(tracks) # 获取切片的指令
# 因为任务时间可能比较长,建议使用 tqdm 来跟踪进度
for c in tqdm(commands['recipes']):
subprocess.call(c[0], shell=True)
修改 flac 文件的媒体信息
修改 flac 文件的歌曲名称、歌手、专辑、乐队、专辑图片等信息,目前 flac 支持的标准媒体信息包括:
TITLE
ARTIST
ALBUM
DATE
GENRE
TRACKNUMBER
DISCNUMBER
COMMENT
BAND
ALBUMARTIST
COMPOSER
准备工作:
# 安装 mutagen
pip install mutagen
代码:
from mutagen.flac import FLAC, Picture, CueSheet
# 读取 flac 文件
flac_file_path = 'flac 文件路径'
audio_file = FLAC(flac_file_path)
# 修改歌曲名,其他字段的修改一样
audio_file['TITLE'] = title
# 添加专辑图片
picture_path = '专辑图片路径'
picture = Picture()
with open('', 'rb') as f:
picture.data = f.read()
picture.mime = u"image/jpeg"
audio_file.add_picture(picture)
# 添加歌词,但歌词并不是标准的媒体字段
lyrics_file_path = '歌词文件路径'
with open(lyrics_file_path, 'r') as f:
audio_file['lyrics'] = f.read()
# 最后记得保存
audio_file.save()