保存视频;使用 UIImagePickerController; IOS 8 Swift
saving video; using UIImagePickerController; IOS 8 Swift
我是应用程序开发的新手,所以这可能是一个微不足道的问题,但请帮助!!
我正在尝试使用 UIImagePickerController class 将视频保存到相机胶卷。到目前为止,我已经成功地拉起相机并保存了图像。我也可以录制视频,但是当我按 "use video" 时,它不会保存到相机胶卷中。
下面是附带的didFinishPickingMediaWithInfo函数。
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
{
let mediaType = info[UIImagePickerControllerMediaType] as NSString
self.dismissViewControllerAnimated(true, completion: nil)
if mediaType.isEqualToString(kUTTypeImage as NSString)
{
let image = info[UIImagePickerControllerOriginalImage] as UIImage
if (newMedia == true)
{
UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
}
else if mediaType.isEqualToString(kUTTypeMovie as NSString)
{
let videoPath = info[UIImagePickerControllerMediaURL] as NSString
if(newMedia == true)
{
UISaveVideoAtPathToSavedPhotosAlbum(videoPath, self,
"image:didFinishSavingWithError:contextInfo:", nil)
}
}
}
}
这里是useVideo例程。
@IBAction func useVideo(sender: AnyObject)
{
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
{
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
imagePicker.mediaTypes = [kUTTypeMovie as NSString]
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
newMedia = true
}
}
这是相机胶卷。
@IBAction func useCameraRoll(sender: AnyObject) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
imagePicker.mediaTypes = [kUTTypeImage as NSString]
imagePicker.mediaTypes = [kUTTypeMovie as NSString]
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
newMedia = false
}
}
如果关闭,你有不匹配。
if mediaType.isEqualToString(kUTTypeImage as NSString)
{
let image = info[UIImagePickerControllerOriginalImage] as UIImage
if (newMedia == true)
{
UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
}
} // <--如果添加图像条件则关闭}
else if mediaType.isEqualToString(kUTTypeMovie as NSString)
{
您可以使用此保存视频,希望对您有所帮助 -
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
let mediaType = info[UIImagePickerControllerMediaType] as! NSString
if mediaType.isEqual(to: kUTTypeMovie as NSString as String)
{
// Is Video
let url: URL = info[UIImagePickerControllerMediaURL] as! URL
assetsLibrary.writeVideoAtPath(toSavedPhotosAlbum: url, completionBlock: {
(nsurl, error) -> Void in
if let theError = error{
print("Error saving video = \(theError)")
self.dismiss(animated: true, completion: nil)
}
else {
print("no errors happened")
}
})
}
}
我是应用程序开发的新手,所以这可能是一个微不足道的问题,但请帮助!!
我正在尝试使用 UIImagePickerController class 将视频保存到相机胶卷。到目前为止,我已经成功地拉起相机并保存了图像。我也可以录制视频,但是当我按 "use video" 时,它不会保存到相机胶卷中。
下面是附带的didFinishPickingMediaWithInfo函数。
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
{
let mediaType = info[UIImagePickerControllerMediaType] as NSString
self.dismissViewControllerAnimated(true, completion: nil)
if mediaType.isEqualToString(kUTTypeImage as NSString)
{
let image = info[UIImagePickerControllerOriginalImage] as UIImage
if (newMedia == true)
{
UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
}
else if mediaType.isEqualToString(kUTTypeMovie as NSString)
{
let videoPath = info[UIImagePickerControllerMediaURL] as NSString
if(newMedia == true)
{
UISaveVideoAtPathToSavedPhotosAlbum(videoPath, self,
"image:didFinishSavingWithError:contextInfo:", nil)
}
}
}
}
这里是useVideo例程。
@IBAction func useVideo(sender: AnyObject)
{
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
{
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
imagePicker.mediaTypes = [kUTTypeMovie as NSString]
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
newMedia = true
}
}
这是相机胶卷。
@IBAction func useCameraRoll(sender: AnyObject) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
imagePicker.mediaTypes = [kUTTypeImage as NSString]
imagePicker.mediaTypes = [kUTTypeMovie as NSString]
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
newMedia = false
}
}
如果关闭,你有不匹配。
if mediaType.isEqualToString(kUTTypeImage as NSString)
{
let image = info[UIImagePickerControllerOriginalImage] as UIImage
if (newMedia == true)
{
UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
}
} // <--如果添加图像条件则关闭}
else if mediaType.isEqualToString(kUTTypeMovie as NSString)
{
您可以使用此保存视频,希望对您有所帮助 -
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
let mediaType = info[UIImagePickerControllerMediaType] as! NSString
if mediaType.isEqual(to: kUTTypeMovie as NSString as String)
{
// Is Video
let url: URL = info[UIImagePickerControllerMediaURL] as! URL
assetsLibrary.writeVideoAtPath(toSavedPhotosAlbum: url, completionBlock: {
(nsurl, error) -> Void in
if let theError = error{
print("Error saving video = \(theError)")
self.dismiss(animated: true, completion: nil)
}
else {
print("no errors happened")
}
})
}
}