请先安装 pip install flet, tinytag 组件
tinytag 是用来读取音频文件的信息的
测试用最好找一个有封面的音频的文件, 我是windows电脑,打开预览模式,选中文件时候能够右边显示图片, 如下,我电脑上某个音频文件的封面
import flet as ft
from tinytag import TinyTag
import base64def main(page: ft.Page):page.window_width = 600page.window_height = 600# bytes 转 base64def byte_to_base64(data):encoded_data = base64.b64encode(data)return encoded_data.decode("utf-8")def ms_to_time(ms):# 毫秒转换为时间格式ms = int(ms)minute, second = divmod(ms / 1000, 60)minute = min(99, minute)return "%02d:%02d" % (minute, second)# 音频文件路径# 这是我本地的歌曲,请确认自己的文件路径song_url = "E:/music/从不后悔爱上你-姜育恒.mp3"# 首先我们给这个图片载入一个没有图片的默认图片,我这里是设置了默认图片# 我这是放在 项目目录 assets/album.png的 一张图片song_cover = ft.Image(width=200, height=200, src="album.png")# 读取音频文件song_info = TinyTag.get(song_url, image=True)# 获取文件内图片(一般为专辑封面)img = song_info.get_image()# 这里注意, img 是一个bytes格式的,所以要把他转成base64位# flet Image控件,有两个属性src和src_base64, 第一个是接收一个图片的路径(本地文件或者网络文件的url)# 这样我们需要把img的格式转换成src_base64用来显示图片 byte_to_base64函数就是这个作用# 这里测试的结果 Image 会优先显示 src_base64的内容if img:song_cover.src_base64 = byte_to_base64(img)print(song_info)song_name = ft.Text(value=f"歌名:{song_info.title}")song_artist = ft.Text(value=f"歌手:{song_info.artist}")song_duration = ft.Text(value=f"歌曲长度:{ms_to_time(song_info.duration*1000)}")cont = ft.Row([song_name,song_artist,song_duration,song_cover,])page.add(cont)ft.app(target=main, assets_dir="assets")
下面是运行界面,我这里只是演示,没有进行美化