迅速下载youtube视频离线

时间:2018-07-18 19:56:49

标签: ios swift youtube swift4

嗨,我正尝试在手机上下载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源下载视频。如果您能提出任何解决方案,那么我将尽量不要使用任何第三方站点,这将是非常有用的。谢谢

2 个答案:

答案 0 :(得分:1)

YouTube非常清楚地说明了这一点,您无法做到这一点。

YouTube API Services - Developer Policies

E下找到了它。处理YouTube数据和内容

  

您和您的API客户端不得,也不得鼓励,启用或   要求其他人:

     

下载,导入,备份,缓存或存储YouTube副本   未经YouTube事先书面许可的视听内容,

IANAL,但我不想与他们的法律团队发生冲突。

答案 1 :(得分:0)

YouTube不提供直接访问视频或音频的简单URL。相反,您将必须使用某种算法来提取其链接。如果您想实现这一点,我建议您使用XCDYouTubeKit,因为它维护良好且易于使用。但是,如果您想使用现成的应用程序,我已经开发了一个开源应用程序YouTag-您可以将其简单地安装在iOS设备上并直接使用,而无需进行开发。