嗨,我正尝试在手机上下载youtube视频,以便用户以后可以离线播放。我在用户可以下载的位置上钩了一个按钮。下面是我目前如何下载视频的代码。
@objc func downloadSelectedVideo() {
if let audioUrl = URL(string: "http://freetone.org/ring/stan/iPhone_5-Alarm.mp3") {
// create your document folder url
let documentsUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
// your destination file url
let destination = documentsUrl.appendingPathComponent(audioUrl.lastPathComponent)
print(destination)
// check if it exists before downloading it
if FileManager().fileExists(atPath: destination.path) {
print("The file already exists at path")
} else {
// if the file doesn't exist
// just download the data from your url
URLSession.shared.downloadTask(with: audioUrl, completionHandler: { (location, response, error) in
// after downloading your data you need to save it to your destination url
guard
let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
let mimeType = response?.mimeType, mimeType.hasPrefix("audio"),
let location = location, error == nil
else { return }
do {
try FileManager.default.moveItem(at: location, to: destination)
print("file saved")
} catch {
print(error)
}
}).resume()
}
}
}
如您所见,我已经将网址链接到mp3中的免费音乐,并且可以正常运行,我可以下载音乐,并且一切正常,但是,当我尝试连接YouTube视频时,却永远无法获取到保存的打印报表文件中,我尝试将其作为网址if let audioUrl = URL(string: "https://www.youtube.com/watch?v=3WSgJCYIewM")
但是保存的打印声明文件从未运行过,但是当我尝试前面提到的其他文件时,保存了打印文件。
下载youtube视频应使用什么网址,我是否必须使用mp3或mp4源下载视频。如果您能提出任何解决方案,那么我将尽量不要使用任何第三方站点,这将是非常有用的。谢谢
答案 0 :(得分:1)
YouTube非常清楚地说明了这一点,您无法做到这一点。
YouTube API Services - Developer Policies
在 E下找到了它。处理YouTube数据和内容
您和您的API客户端不得,也不得鼓励,启用或 要求其他人:
下载,导入,备份,缓存或存储YouTube副本 未经YouTube事先书面许可的视听内容,
IANAL,但我不想与他们的法律团队发生冲突。
答案 1 :(得分:0)
YouTube不提供直接访问视频或音频的简单URL。相反,您将必须使用某种算法来提取其链接。如果您想实现这一点,我建议您使用XCDYouTubeKit,因为它维护良好且易于使用。但是,如果您想使用现成的应用程序,我已经开发了一个开源应用程序YouTag-您可以将其简单地安装在iOS设备上并直接使用,而无需进行开发。