swift - 在 AVPlayer 的主包中获取子文件夹路径的问题
问题描述
我正在改进我的项目代码。
我坚持按子文件夹调用视频的过程,因为代码会读取所有 mp4 文件,它发现。
应用我在互联网上找到的不同代码,但我最终破坏了所有代码而没有成功。我将不胜感激这方面的帮助或建议。
附加图像显示了包含不同视频的文件夹位置,我想将我的视图基本和中间文件夹导入 UIKit 导入 AVKit 导入 AVFoundation
class BasicLevel: UIViewController, UITableViewDataSource, UITableViewDelegate, AVPlayerViewControllerDelegate{
var videoArray = [String]()
@IBOutlet weak var videoView: UIView!
@IBOutlet weak var videoTableView: UITableView!
var videoVC = AVPlayerViewController()
override func viewDidLoad() {
super.viewDidLoad()
videoTableView.delegate = self
videoTableView.dataSource = self
videoView.addSubview(videoVC.view)
videoVC.view.frame = videoView.frame
videoVC.showsPlaybackControls = false
let filemanager = FileManager.default
let path = Bundle.main.resourcePath!
let allItems = try? filemanager.contentsOfDirectory(atPath: path)
for singleItem in allItems! {
if singleItem.hasSuffix("mp4") {
videoArray.append(singleItem)
}
}
if videoArray.count > 0 {
playTopVideo(value: 0)
}
}
func playTopVideo(value: Int) {
let nameComponent = videoArray[value].components(separatedBy: ".")
let name = nameComponent[0]
let path = Bundle.main.path(forResource: name, ofType: "mp4")
let url = URL(fileURLWithPath: path!)
videoVC.player = AVPlayer(url: url)
videoVC.player?.play()
}
}
解决方案
首先,您负责创建捆绑包的目录结构,所以不要搞砸。
其次使用 URL 相关的 API。
例如,将所有 mp4 文件放在名为videos
. 创建一个真正的蓝色文件夹而不是组(黄色)文件夹至关重要。
这会将您的代码减少到
var videoArray = [URL]()
override func viewDidLoad() {
super.viewDidLoad()
videoTableView.delegate = self
videoTableView.dataSource = self
videoView.addSubview(videoVC.view)
videoVC.view.frame = videoView.frame
videoVC.showsPlaybackControls = false
videoArray = Bundle.main.urls(forResourcesWithExtension: "mp4", subdirectory: "videos")!
playTopVideo(value: 0)
}
func playTopVideo(value: Int) {
let videoURL = videoArray[value]
videoVC.player = AVPlayer(url: videoURL)
videoVC.player?.play()
}
推荐阅读
- java - 是否可以指示 JVM 仅记录完整的 GC 事件?
- git - 当我可以在“git init”之后对“git pull”做同样的事情时,为什么要“git clone”?
- ios - App.Delegate 从 ViewController 到 TabController Swift 5
- google-cloud-firestore - Firebase 使用侦听器与完整查询
- ssas - 来自 ssas 多维立方体,如何通过 salesPoint 和 month 从 factsales 中获得最高销售额
- node.js - 我如何编写一个从 mongodb 查询的辅助函数,然后可以为任何 ejs 模板调用此函数
- responsive - 我怎样才能使网站移动友好?
- java - 在java中使用递归来反转字符串
- python - 使用 SymPy 解决具有符号数量变量的约束优化问题
- git - git push a detached head to a dev branch of remote