iOS Swift - 无法使用库中的视频
iOS Swift - Not able to use video from Library
我正在尝试从我的 swift 应用程序的库中获取视频。
我正在使用以下代码片段:
print("ChatDetailsController - imgaction - Vid from Lib pressed")
self.selection = "videoLib";
self.imgSelection = "vidFromLib"
self.imagePicker.sourceType = .PhotoLibrary
self.imagePicker.delegate = self
self.imagePicker.mediaTypes = ["public.movie"]
self.presentViewController(self.imagePicker!, animated: true, completion: nil)
然后在委托方法中:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
if(selection == "videoLib")
{
if let videoURL = info[UIImagePickerControllerReferenceURL] as? NSURL
{
print("imagePickerController - reached for video - from Lib - \(videoURL)")
let videoData = NSData(contentsOfURL: videoURL)
}
}
}
当 运行打开应用程序时,它显示库,我可以 select 视频,然后它说正在压缩视频..但是应用程序崩溃了。
当我尝试访问 videoData
变量时发生崩溃,因为它无法获取实际数据,因为路径是资产路径而不是视频路径。
日志显示类似这样的内容:
fatal error: unexpectedly found nil while unwrapping an Optional value
打印函数显示:
imagePickerController - reached for video - from Lib - assets-library://asset/asset.MOV?id=7D3BFA00-A7CB-470C-8899-F82FCC2CBC54&ext=MOV
此外,在 choosing/selecting 视频之后,console/log 中显示了与此类似的消息:
[Generic] video path /var/mobile/Media/PhotoData/CPLAssets/group419/A2901DD1-FDEF-423B-B4A3-E808B9AC45E1.MOV for PLPreviewImageAndDurationForVideoAtPath does not exist
当然,文件名会在每个 运行 上更改。
我可以从相机获取视频和图像,也可以从库中获取图像,我只是在使用库中的视频时遇到问题。我希望看到视频 URL 类似于:
例如 /var/mobile/Containers/Data/Application/BEDDC883-B20E-496D-8C9A-A40EC0A29214/Documents/63ea24932c101b76c72fcbae3993fc9b.mov
;视频文件在应用程序中并且未显示为不可用资产 URL。
任何帮助将不胜感激。
问题是您试图获取错误的视频。您正在尝试使用 info[UIImagePickerControllerReferenceURL]
。你要的是info[UIImagePickerControllerMediaURL]
。
我正在尝试从我的 swift 应用程序的库中获取视频。 我正在使用以下代码片段:
print("ChatDetailsController - imgaction - Vid from Lib pressed")
self.selection = "videoLib";
self.imgSelection = "vidFromLib"
self.imagePicker.sourceType = .PhotoLibrary
self.imagePicker.delegate = self
self.imagePicker.mediaTypes = ["public.movie"]
self.presentViewController(self.imagePicker!, animated: true, completion: nil)
然后在委托方法中:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
if(selection == "videoLib")
{
if let videoURL = info[UIImagePickerControllerReferenceURL] as? NSURL
{
print("imagePickerController - reached for video - from Lib - \(videoURL)")
let videoData = NSData(contentsOfURL: videoURL)
}
}
}
当 运行打开应用程序时,它显示库,我可以 select 视频,然后它说正在压缩视频..但是应用程序崩溃了。
当我尝试访问 videoData
变量时发生崩溃,因为它无法获取实际数据,因为路径是资产路径而不是视频路径。
日志显示类似这样的内容:
fatal error: unexpectedly found nil while unwrapping an Optional value
打印函数显示:
imagePickerController - reached for video - from Lib - assets-library://asset/asset.MOV?id=7D3BFA00-A7CB-470C-8899-F82FCC2CBC54&ext=MOV
此外,在 choosing/selecting 视频之后,console/log 中显示了与此类似的消息:
[Generic] video path /var/mobile/Media/PhotoData/CPLAssets/group419/A2901DD1-FDEF-423B-B4A3-E808B9AC45E1.MOV for PLPreviewImageAndDurationForVideoAtPath does not exist
当然,文件名会在每个 运行 上更改。
我可以从相机获取视频和图像,也可以从库中获取图像,我只是在使用库中的视频时遇到问题。我希望看到视频 URL 类似于:
例如/var/mobile/Containers/Data/Application/BEDDC883-B20E-496D-8C9A-A40EC0A29214/Documents/63ea24932c101b76c72fcbae3993fc9b.mov
;视频文件在应用程序中并且未显示为不可用资产 URL。
任何帮助将不胜感激。
问题是您试图获取错误的视频。您正在尝试使用 info[UIImagePickerControllerReferenceURL]
。你要的是info[UIImagePickerControllerMediaURL]
。