URL से वीडियो डाउनलोड करके फोटो लाइब्रेरी में सेव करना
Swift में URL से वीडियो डाउनलोड करने के लिए हमें कुछ बातों को ध्यान में रखते हुए कुछ चरणों को करने की आवश्यकता होती है।
ध्यान देने योग्य बिंदु:
- हम वीडियो डाउनलोड करने के लिए इंटरनेट का उपयोग करेंगे, इसलिए हमें अपने Info.plist में App Transport Security के लिए परमिशन की अनुमति देनी होगी
- डाउनलोड किए गए वीडियो को फोटोज ऐप में सेव करना होगा, इसलिए फोटोज परमिशन आवश्यक है
- वीडियो को हमेशा बैकग्राउंड में डाउनलोड किया जाना चाहिए क्योंकि फोरग्राउंड में डाउनलोड करने से ऐप का उपयोग बाधित हो सकता है
आवश्यक Info.plist एंट्रीज
<key>NSPhotoLibraryUsageDescription</key>
<string>saves</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
वीडियो डाउनलोड फंक्शन
अब नीचे दिखाया गया फंक्शन जोड़ें और इसे अपनी क्लास के viewDidLoad मेथड के अंदर कॉल करें।
override func viewDidLoad() {
super.viewDidLoad()
self.downloadVideo()
}
func downloadVideo() {
let sampleURL = "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4"
DispatchQueue.global(qos: .background).async {
if let url = URL(string: sampleURL), let urlData = NSData(contentsOf: url) {
let galleryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let filePath = "\(galleryPath)/nameX.mp4"
DispatchQueue.main.async {
urlData.write(toFile: filePath, atomically: true)
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: URL(fileURLWithPath: filePath))
}) { success, error in
if success {
print("Successfully Saved")
} else {
print(error?.localizedDescription ?? "Unknown error")
}
}
}
}
}
}
चूंकि स्क्रीन पर कोई अन्य UI एलिमेंट नहीं है, इसलिए स्क्रीन पर कोई परिणाम देखने की उम्मीद न करें, केवल प्रिंट स्टेटमेंट्स आउटपुट में दिखाए जाएंगे और यदि सफलतापूर्वक किया गया, तो वीडियो फोटोज में सेव हो जाएगा जिसे फोटोज ऐप में देखा जा सकता है।