媒体信息使用指导
不可见组件:读取音乐、视频文件里写着的信息——歌名、歌手、专辑、年份、流派、时长、视频尺寸,以及专辑封面
(自动存成图片文件,可以直接显示在图像组件上,或交给本地通知的媒体通知当封面)。
来源可以是素材文件名、手机里的文件路径或网址;读取在后台进行,完成后触发信息已读取(是否成功)(Loaded)。
快速上手:显示歌曲信息和封面
各案例独立使用;组合到同一屏幕时,将同名事件的处理合并到一个事件积木中。
when Screen1.Initialize() {
媒体信息1.Load("qingtian.mp3")
}
when 媒体信息1.Loaded(是否成功) {
if 是否成功 {
标签_歌名.Text = 媒体信息1.Title
标签_歌手.Text = join(媒体信息1.Artist, " · ", 媒体信息1.LengthText)
图像1.Picture = 媒体信息1.CoverImage
本地通知1.ShowMedia(媒体信息1.Title, 媒体信息1.Artist, 媒体信息1.CoverImage)
} else {
标签_歌名.Text = "读不出歌曲信息"
}
}
有的文件没写歌名,标题会是空文本,这时可以直接显示文件名。
搭建与测试
在设计器拖入本组件和案例涉及的按钮、标签、布局等组件,按案例中的名称重命名。先运行最小案例,确认事件返回,再增加业务逻辑。示例中的素材先上传到项目,服务器地址、令牌、文件路径换成自己的值。
可见组件需要有非零宽高;不可见工具组件必须由属性或方法启动。设计器展示样式不等于运行时已加载数据或绑定目标。联机测试应使用包含本组件的 AI 伴侣;涉及系统入口或权限的行为还要编译安装后验证。
案例:读取音频时长
上传 music.mp3,放媒体信息和标签;等 Loaded 成功后再读属性,不在 Load 后立即读。
when Screen1.Initialize() {
媒体信息1.Load("music.mp3")
}
when 媒体信息1.Loaded(是否成功) {
if 是否成功 {
标签1.Text = join(媒体信息1.Title, " / ", 媒体信息1.LengthText)
} else {
标签1.Text = "无法读取媒体信息"
}
}
文件本身可能没有歌名、歌手或封面;读取成功不代表所有字段都有值。网络地址须能直接访问媒体文件。
属性、方法与事件速查
完整参数类型、默认值和平台说明见组件参考。下表按调用入口列出用途;有完成事件的方法在事件中读取结果。
| 入口 | 用途 |
|---|---|
专辑(Album) |
专辑名。 |
艺术家(Artist) |
艺术家(歌手)。 |
封面图片(CoverImage) |
专辑封面图片文件路径(读取时自动存到应用缓存目录),可直接赋给图像的「图片」或媒体通知的封面;没有封面时为空文本。视频取第一帧附近的画面。 |
流派(Genre) |
流派。 |
时长(Length) |
时长(毫秒)。 |
时长文字(LengthText) |
时长文字,如 3:45,超过一小时为 1:02:03。 |
MIME类型(MimeType) |
文件类型,如 audio/mpeg、video/mp4。 |
标题(Title) |
标题(歌名),文件里没写时为空文本。 |
视频高度(VideoHeight) |
视频高度(像素),音频为 0。 |
视频宽度(VideoWidth) |
视频宽度(像素),音频为 0。 |
年度(Year) |
年份。 |
读取(源文件)(Load) |
读取媒体文件信息(素材文件名、手机里的文件路径或网址),完成后触发「信息已读取」。读取期间各属性保持上一次的值;再次调用会以最后一次为准。 |
信息已读取(是否成功)(Loaded) |
读取完成。success 为假表示读不出来(文件不存在、格式不支持或网络错误),此时各属性清空。 |
常见问题与验收
| 检查项 | 操作与预期 |
|---|---|
| 初始化 | 对照案例检查是否已经调用加载、注册、连接或显示方法;仅拖入组件不会替你执行这些步骤。 |
| 结果返回 | 将成功事件和失败事件都接到标签,记录事件参数;异步操作完成前不读取结果属性。 |
| 输入配置 | 检查素材名大小写、网址是否为直接资源地址、文件是否存在、编号和索引是否在范围内。 |
| 平台与权限 | 按组件参考中的平台说明测试;授权被拒绝时应有明确提示,不继续假定操作成功。 |
| 最小案例 | 先验证页面中的最小案例,再验证第二个场景;重复操作、取消、返回屏幕后结果应符合事件说明。 |
完整 .aia 源码与操作指导
工程自带真实2秒PCM WAV和仓库中的AI助手示例MP4,不需要用户先上传素材。音频和视频都可从选择器切换并读取,11个只读属性逐项展示。标题、专辑、封面只在文件确有元数据时才有值。鸿蒙只支持本地源。
导入 MediaInfoAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。
| API / 功能 | 操作入口 | 预期结果 |
|---|---|---|
| Load / Loaded | 选择beep.wav点读取 | 实际2秒音频,完成事件给成功布尔;WAV未写入标题等标签,这些为空是正常结果 |
| 视频素材 | 选择example.mp4点读取 | 读取随工程的真实演示短片,时长及视频宽高大于0 |
| Title / Artist / Album / Year / Genre / MimeType | 成功后看信息区 | 显示文件实际标签,缺少的标签保留空文本,不编造内容 |
| Length / LengthText / VideoWidth / VideoHeight | 读取音频与视频对比 | 毫秒和文字时长并列;纯音频宽高通常为0,视频显示实际尺寸 |
| CoverImage | 读包含专辑封面的本地文件 | 有封面时显示实际路径并载入;示例无嵌入封面,显示空是正常结果 |
| 失败与恢复 | 点失败,再选择素材点读取 | success为假且有具体错误;重新读取有效素材可恢复 |
| 外部文件 | 输入真实可访问本地路径 | 读取自己文件的标签;鸿蒙URL不支持,不假称已读到网络元数据 |
所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。
素材来源:beep.wav为本仓库案例生成的2秒、8kHz、单声道16位PCM提示音;example.mp4来自仓库已有 ai-videos/AI助手短视频系列/AI助手竖屏EP1.mp4,仅演示媒体参数读取。没有空素材或远程示意链接。文件大约3MB,请允许伴侣先完成资源下载,再点读取;下载未完成可稍后重试。
媒体信息
导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 工程自带真实2秒PCM WAV和仓库中的AI助手示例MP4,不需要用户先上传素材。音频和视频都可从选择器切换并读取,11个只读属性逐项展示。标题、专辑、封面只在文件确有元数据时才有值。鸿蒙只支持本地源。 覆盖检查 13/13。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
扫码添加客服咨询