macos - 使用带有 ID3 标签的 AAC 和 AVPlayer
问题描述
我有一个 AAC 文件,其中包含从 HLS 流中捕获的一堆 ID3 标签。我可以用 AVPlayer 很好地播放它。我想做的是:
1) 在音频播放时向用户呈现当前 ID3 标签
2) 获取所有唯一 ID3 标签的列表,以便播放可以跳转到该位置
我发现无法通过 AVPlayer API 获取 ID3 元数据。我可以在 AAC 文件中搜索所有 ID3 标签,但这会给我 ID3 标签的文件字节偏移量,并且似乎没有办法将文件字节偏移量转换为时间偏移量以便跳转播放到该位置。
解决方案
aac 文件中的每一帧都以包含其采样率的 ADTS 标头开始。每帧正好是 1024 个样本。因此,每一帧都是 sample_rate/1024 秒长,第一帧从零开始。由此,您可以遍历文件,并计算每帧时间戳。
推荐阅读
- websocket - 是否可以捕获 signalR 连接断开事件?错误:连接断开,错误 webSocket 关闭,状态码:1006
- c# - 如何在复杂的异步等待场景中实现超时和取消
- powerbi - 根据另一个表中的度量查找列中的值
- r - 使用 dplyr 标记区域
- javascript - 在 Javascript 中设置样式更改事件侦听器
- scala - 协变类型 E 出现在类型 A 的逆变位置 => returnerror.Error[E,B] of value f
- tableau-api - 在 Tableau 中如何更改参数中的日历日期格式?
- javascript - 将变量传递到其他页面并执行 if 条件函数
- android - 如何在 Android 上的 Kotlin 类中使用上下文
- jpa - 范式和映射表