【问题标题】:Swift - How to get video dimension?Swift - 如何获得视频尺寸?
【发布时间】:2017-07-03 06:51:42
【问题描述】:

我正在开发一个视频编辑应用程序,在该应用程序中,每个视频都会以这样的方式进行平方处理,这样视频的任何部分都不会被裁剪。为此,对于纵向视频,它在左右两侧以及横向视频中包含黑色部分,它在视频的顶部和底部包含黑色部分。黑色部分是视频的一部分,它们不适用于AVPlayerViewController。这是示例,

我需要用一些CALayers 覆盖这些黑色部分。

CALayer 的框架(CGRect)是什么?

我正在使用包含黑色部分的naturalSize 属性获取视频尺寸。

有没有什么办法可以得到没有黑色部分的视频尺寸?(我指的是实际视频内容的尺寸)或 有什么办法可以得到视频黑色区域的CGRect

【问题讨论】:

  • 我理解正确了吗?您需要视频的宽高比吗?
  • 不...纵横比无法帮助我解决问题
  • @pigeon_39 你有解决方案吗..请帮我解决同样的问题。
  • 对不起兄弟,我没有得到解决方案:(@Kapil Maheshwari
  • 如果我发现任何问题将不会发布:)

标签: ios swift video size


【解决方案1】:
func initAspectRatioOfVideo(with fileURL: URL) -> Double {
  let resolution = resolutionForLocalVideo(url: fileURL)
  guard let width = resolution?.width, let height = resolution?.height else {
     return 0
  }
  return Double(height / width)
}

private func resolutionForLocalVideo(url: URL) -> CGSize? {
    guard let track = AVURLAsset(url: url).tracks(withMediaType: AVMediaType.video).first else { return nil }
   let size = track.naturalSize.applying(track.preferredTransform)
   return CGSize(width: abs(size.width), height: abs(size.height))
}

【讨论】:

  • 这太棒了。多谢。显然只使用“自然大小”是行不通的,但你的代码很棒!谢谢!
  • @RoiMulia 我不记得了。我认为应该。你可以试试看
  • :/我的错我在使用(自然大小+首选转换)的目标 C 中遇到同样的问题,它总是返回一个过时的值! (带远程视频)
  • @VladPulichev 你好。感谢您的回答。你知道为什么这个网址https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8总是得到nil吗?我还检查了所有其他媒体类型(音频、元数据等),但结果相同 - nil
  • 对我不起作用。首先总是返回 nil。
【解决方案2】:

这是Vlad Pulichev's answer 的更简洁版本。

var aspectRatio: CGFloat! // use the function to assign your variable

func getVideoResolution(url: String) -> CGFloat? {
    guard let track = AVURLAsset(url: URL(string: url)!).tracks(withMediaType: AVMediaType.video).first else { return nil }
    let size = track.naturalSize.applying(track.preferredTransform)
    return abs(size.height) / abs(size.width)
}

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多