swift - 如何根据 mp3 文件显示简单的文本?
问题描述
我的应用按顺序播放 mp3 文件。我终于设法按顺序播放 mp3 文件。此外,我需要根据 mp3 文件在我的应用程序上显示简单的文本。
例如,当播放 0.mp3 文件时,textlabel.text 显示来自 textarray 的“hello”。播放 0.mp3 后,播放 1.mp3 文件时,textlabel.text 显示来自 textarray 的“nice to meet you”。
如何根据音频文件,一个接一个地在文本标签上显示简单的句子?
textarray = [“你好”,“很高兴认识你”,“我叫詹姆斯”,“你几岁?”]
@IBAction func autoplay(_ sender: Any) {
var items : [AVPlayerItem] = []
for number in myIndex..<arr.count {
let url = Bundle.main.url(forResource: String(number), withExtension: "mp3")!
items.append(AVPlayerItem(url: url))
textlabel.text = textarry[number]
}
queue = AVQueuePlayer(items: items)
queue.play()
}
解决方案
此处的许多答案中都提到了如何在视频项目播放完毕时获得回调。显示相关视频文本的一种方法如下,
@IBAction func autoplay(_ sender: Any) {
var items : [AVPlayerItem] = []
for number in myIndex..<arr.count {
let url = Bundle.main.url(forResource: String(number), withExtension: "mp3")!
items.append(AVPlayerItem(url: url))
}
queue = AVQueuePlayer(items: items)
queue.play()
textlabel.text = textarry[myIndex]
}
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(onVideoComplete),
name: .AVPlayerItemDidPlayToEndTime,
object: nil)
}
@objc func onVideoComplete() {
if let currentTitle = textlabel.text, let currentIndex = textarry.firstIndex(of: currentTitle) {
self.textlabel.text = textarry[currentIndex.advanced(by: 1)]
}
}
推荐阅读
- flutter - 点击功能上的颤振 gridview 菜单不起作用
- angular - 在角垫表中排序不起作用
- javascript - 确保返回长度为5的递归函数
- asp.net - ASP.NET REPLACING Request.IsAuthenticated with a bool is generate System.NullReferenceException: Object reference not set to an instance of an object
- swift - 单元测试 UNUserNotificationCenterDelegate 方法
- python - 将使用 django-wkhtmltopdf 生成的 PDF 保存到磁盘
- python - Twitter / Tweepy OAuth - 如何保存 oauth_token 以在 REST API 设置中的回调中验证它
- r - 创建一个对向量执行逻辑测试并返回向量的动态变量
- c - 如何正确转义makefile中的#字符?
- node.js - NodeJS express-session如何将数据存储在cookie中