
iphone
如何获取从库中选择的视频的持续时间
在iphone上,我们可以通过使用UIImagePickerController来选择视频文件。一旦用户从库中选择了视频文件,我们可以使用AVFoundation框架来获取该视频的持续时间。下面我们将详细介绍如何实现这一功能。使用UIImagePickerController选择视频文件首先,我们需要在我们的视图控制器中添加一个按钮或其他交互元素,以触发视频选择过程。然后将以下代码添加到按钮的点击事件处理程序中:Swiftlet imagePicker = UIImagePickerController()imagePicker.sourceType = .photoLibraryimagePicker.mediaTypes = [kUTTypeMovie as String]imagePicker.delegate = selfpresent(imagePicker, animated: true, completion: nil)这将创建一个UIImagePickerController实例,并将其sourceType设置为.photoLibrary以从用户的媒体库中选择视频文件。我们还将mediaTypes属性设置为[kUTTypeMovie as String],以限制用户只能选择视频文件。最后,我们将视图控制器本身设置为UIImagePickerController的委托,以便在选择完视频后接收回调。获取选择视频的持续时间要获取选择的视频的持续时间,我们需要在视图控制器中实现UIImagePickerControllerDelegate的以下方法:
Swiftfunc imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { dismiss(animated: true, completion: nil) guard let mediaType = info[.mediaType] as? String, mediaType == (kUTTypeMovie as String), let url = info[.mediaURL] as? URL else { print("Invalid vIDEO file") return } let asset = AVURLAsset(url: url) let duration = asset.duration let seconds = CMTimeGetSeconds(duration) print("Selected vIDEO duration: \(seconds) seconds")}在这个方法中,我们首先dismiss掉UIImagePickerController,然后从info字典中获取选择的媒体类型和URL。我们需要确保选择的文件是视频文件,然后使用AVURLAsset从URL创建一个AVAsset实例。利用AVAsset的duration属性,我们可以获得一个CMTime类型的持续时间。最后,通过调用CMTimeGetSeconds函数将持续时间转换为秒数,并打印出来。案例代码下面是一个完整的示例代码,展示了如何在iphone上获取从库中选择的视频的持续时间:Swiftimport UIKitimport AVFoundationimport MobileCoreServicesclass ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBAction func selectVIDEOButtonTapped(_ sender: UIButton) { let imagePicker = UIImagePickerController() imagePicker.sourceType = .photoLibrary imagePicker.mediaTypes = [kUTTypeMovie as String] imagePicker.delegate = self present(imagePicker, animated: true, completion: nil) } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { dismiss(animated: true, completion: nil) guard let mediaType = info[.mediaType] as? String, mediaType == (kUTTypeMovie as String), let url = info[.mediaURL] as? URL else { print("Invalid vIDEO file") return } let asset = AVURLAsset(url: url) let duration = asset.duration let seconds = CMTimeGetSeconds(duration) print("Selected vIDEO duration: \(seconds) seconds") } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true, completion: nil) }}通过使用以上代码,我们可以实现从媒体库中选择视频并获取其持续时间的功能。希望本文能对你在iphone开发中处理视频文件有所帮助。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号