-3
ユーザはカメラロールからビデオを読み込んで編集し、カメラロールに保存することができます。これどうやってするの?カメラロールからXcode(Swift)のアプリケーションにビデオを追加する方法
ユーザはカメラロールからビデオを読み込んで編集し、カメラロールに保存することができます。これどうやってするの?カメラロールからXcode(Swift)のアプリケーションにビデオを追加する方法
さて、まずあなたは、このようなユーザーの権限を依頼する必要があります。
AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo) { response in
if response {
//access granted
} else {
}
}
//Photos
let photos = PHPhotoLibrary.authorizationStatus()
if photos == .notDetermined {
PHPhotoLibrary.requestAuthorization({status in
if status == .authorized{
...
} else {}
})
}
次にあなたが怒鳴る示すように、あなたはplistファイルでそれをする理由について、いくつかの説明を配置する必要があります。
<key>NSCameraUsageDescription</key>
<string>You can take photos</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>You can select photos to attach it on this app.</string>
についてビデオを編集する、それは非常に主観的なテーマです。どのような変更を行う必要がありますか?そしてあなたがしたいことに応じて、それは非常に複雑になる可能性があります。
import AssetsLibrary
...
...
func downloadVideoToCameraRoll() {
// Local variable pointing to the local file path for the downloaded video
var localFileUrl: String?
// A closure for generating the local file path for the downloaded video. This will be pointing to the Documents directory with a unique UDID file name.
let destination: (NSURL, NSHTTPURLResponse) -> (NSURL) = {
(temporaryURL, response) in
if let directoryURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as? NSURL {
let finalPath = directoryURL.URLByAppendingPathComponent("\(NSUUID()).\(response.suggestedFilename!)")
localFileUrl = finalPath.absoluteString
return finalPath
}
return temporaryURL
}
// The media post which should be downloaded
let postURL = NSURL(string: "https://api.instagram.com/v1/media/" + "952201134785549382_250131908" + "?access_token=" + InstagramEngine.sharedEngine().accessToken)!
// Then some magic happens that turns the postURL into the videoURL, which is the actual url of the video media:
let videoURL = NSURL(string: "https://scontent.cdninstagram.com/hphotos-xfp1/t50.2886-16/11104555_1603400416544760_416259564_s.mp4")!
// Download starts
let request = Alamofire.download(.GET, videoURL, destination)
// Completion handler for the download
request.response { (request, response, data, error) -> Void in
if let path = localFileUrl {
let isVideoCompatible = UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(path)
println("bool: \(isVideoCompatible)") // This logs out "bool: false"
let library = ALAssetsLibrary()
library.writeVideoAtPathToSavedPhotosAlbum(NSURL(string: path), completionBlock: { (url, error) -> Void in
// Done! Go check your camera roll
})
}
}
}
幸運:
その後カメラロールに保存、私は、ファイルをダウンロードし、カメラロールに保存するコード例を持って!
コードに追加すると「期待される宣言」と表示されますが、なぜこのエラーが表示されますか? :( – Gabi