【问题标题】:AVFoundation: How can you get the video dimensions of a video being streamed by AVURLAsset?AVFoundation:如何获取 AVURLAsset 流式传输的视频的视频尺寸?
【发布时间】:2018-07-11 05:50:06
【问题描述】:

我需要知道我通过 AVURLAsset 从网络上播放的视频是纵向还是横向。

过去,我通过获取视频轨道的自然大小、应用其首选变换,然后比较宽度和高度来对本地视频进行此操作。示例:

if let assetTrack = asset.tracks(withMediaType: AVMediaType.video).first {
    let temp = assetTrack.naturalSize.applying(assetTrack.preferredTransform)
    let size = CGSize(width:fabs(temp.width), height: fabs(temp.height))
    return size.height > size.width
}

但是对于这个流媒体视频,asset.tracks 是空的,所以我无法检查自然大小。

有谁知道如何解决这个问题?

【问题讨论】:

  • 试试[asset tracksWithMediaCharacteristic:AVMediaCharacteristicVisual]] 并获得它的自然大小?所有轨道都是空的吗?以前从来没有过。。
  • 不幸的是,tracksWithMediaCharacteristic 没有运气,因为是的,整个轨道数组是空的。不过感谢您的建议!

标签: ios swift avfoundation dimensions avurlasset


【解决方案1】:

玩了一整天,终于找到了解决办法:

显然,流式传输 .m3u8 HLS 文件将始终导致空的 asset.tracks 数组。

获取维度的方法是通过AVPlayerItem.presentationSize属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2013-07-02
    • 2013-01-25
    • 1970-01-01
    相关资源
    最近更新 更多