iPhone:如何获取从库中选择的视频的持续时间

iosiphone

1个回答

写回答

niqing

2025-12-10 21:44

+ 关注

iphone
iphone

如何获取从库中选择的视频的持续时间

iphone上,我们可以通过使用UIImagePickerController来选择视频文件。一旦用户从库中选择了视频文件,我们可以使用AVFoundation框架来获取该视频的持续时间。下面我们将详细介绍如何实现这一功能。

使用UIImagePickerController选择视频文件

首先,我们需要在我们的视图控制器中添加一个按钮或其他交互元素,以触发视频选择过程。然后将以下代码添加到按钮的点击事件处理程序中:

Swift

let imagePicker = UIImagePickerController()

imagePicker.sourceType = .photoLibrary

imagePicker.mediaTypes = [kUTTypeMovie as String]

imagePicker.delegate = self

present(imagePicker, animated: true, completion: nil)

这将创建一个UIImagePickerController实例,并将其sourceType设置为.photoLibrary以从用户的媒体库中选择视频文件。我们还将mediaTypes属性设置为[kUTTypeMovie as String],以限制用户只能选择视频文件。最后,我们将视图控制器本身设置为UIImagePickerController的委托,以便在选择完视频后接收回调。

获取选择视频的持续时间

要获取选择的视频的持续时间,我们需要在视图控制器中实现UIImagePickerControllerDelegate的以下方法:

Swift

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")

}

在这个方法中,我们首先dismiss掉UIImagePickerController,然后从info字典中获取选择的媒体类型和URL。我们需要确保选择的文件是视频文件,然后使用AVURLAsset从URL创建一个AVAsset实例。利用AVAsset的duration属性,我们可以获得一个CMTime类型的持续时间。最后,通过调用CMTimeGetSeconds函数将持续时间转换为秒数,并打印出来。

案例代码

下面是一个完整的示例代码,展示了如何在iphone上获取从库中选择的视频的持续时间:

Swift

import UIKit

import AVFoundation

import MobileCoreServices

class 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开发中处理视频文件有所帮助。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号