Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จะดาวน์โหลดวิดีโอโดยใช้ URL และบันทึกลงในอัลบั้มรูปภาพโดยใช้ Swift ได้อย่างไร


ในการดาวน์โหลดวิดีโอจาก URL อย่างรวดเร็ว เราจำเป็นต้องดำเนินการสองสามขั้นตอนโดยคำนึงถึงบางสิ่งเป็นหลัก

ข้อควรสังเกตคือ

  • เราจะใช้อินเทอร์เน็ตเพื่อดาวน์โหลดวิดีโอ ดังนั้น เราจึงต้องอนุญาตการอนุญาตสำหรับการรักษาความปลอดภัยในการขนส่งแอปใน Info.plist

  • เราจำเป็นต้องบันทึกวิดีโอที่ดาวน์โหลดไปยังแอป Photos จึงต้องมีการอนุญาตรูปภาพ

  • ควรดาวน์โหลดวิดีโอในพื้นหลังเสมอ เนื่องจากอาจทำให้เราไม่สามารถใช้แอปได้หากดาวน์โหลดบนเบื้องหน้า

ตอนนี้ เราจะใช้รหัสด้านล่างเพื่อบันทึกวิดีโอจากลิงก์สุ่มในอุปกรณ์ของเรา คุณจะต้องอนุญาตรูปภาพขณะเรียกใช้แอป

ขั้นแรกให้เพิ่มรหัสต่อไปนี้ในไฟล์ info.plist ของคุณ

<key>NSPhotoLibraryUsageDescription</key>
<string>saves</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

หลังจากนี้ ให้เพิ่มฟังก์ชันที่แสดงด้านล่างและเรียกใช้ภายในเมธอด viewDidLoad ของคลาสของคุณ

ตอนนี้ viewDidLoad ของคุณควรมีลักษณะดังนี้ -

override func viewDidLoad() {
   super.viewDidLoad()
   self.downloadVideo()
}

ด้านล่างนี้คือโค้ดสำหรับฟังก์ชันดาวน์โหลดวิดีโอ

func downloadVideo() {
   let sampleURL = "https://commondatastorage.googleapis.com/gtv-videosbucket/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("Succesfully Saved")
               } else {
                  print(error?.localizedDescription)
               }
            }
         }
      }
   }
}

เนื่องจากไม่มีองค์ประกอบ UI อื่นบนหน้าจอจึงไม่คาดว่าจะเห็นผลลัพธ์ใด ๆ บนหน้าจอ เฉพาะคำสั่งการพิมพ์เท่านั้นที่จะแสดงในเอาต์พุต และหากทำสำเร็จ วิดีโอจะถูกบันทึกลงในภาพถ่ายซึ่งสามารถเห็นได้ในแอพรูปภาพ .