import AVFoundation
import Foundation

extension URL {
    /// Returns the asset’s duration in seconds, or `nil` if it can’t be read.
    func asyncVideoDuration() async -> TimeInterval? {
        let asset = AVURLAsset(url: self)
        guard let duration = try? await asset.load(.duration) else { return nil }
        return CMTimeGetSeconds(duration).isFinite ? CMTimeGetSeconds(duration) : nil
    }
}
