Dix*_*ine 18 http-live-streaming ios avplayer swift
我正在尝试在播放hls流时获得视频分辨率.我有典型的玩家初始化:
let urlAsset = AVURLAsset(URL: currentVideoUrl)
self.player=AVPlayer(playerItem: AVPlayerItem(asset:urlAsset))
.......
Run Code Online (Sandbox Code Playgroud)
我使用KVO,当我获得AVPlayerItem的.ReadyToPlay状态时,我尝试获取视频大小:
func resolutionSizeForVideo() {
guard let videoTrack = self.player.currentItem?.asset.tracksWithMediaType(AVMediaTypeVideo).first else
{ return
}
let size = CGSizeApplyAffineTransform(videoTrack.naturalSize, videoTrack.preferredTransform)
let frameSize = CGSize(width: fabs(size.width), height: fabs(size.height))
print ("video size: \(frameSize)")
}
Run Code Online (Sandbox Code Playgroud)
问题是tracksWithMediaType()总是返回空数组(但适用于非流文件,例如.mov).
如何在AVPlayer中播放HLS视频的大小(CGRect)?
tym*_*mac 11
您是否能够使用此方法至少记录视频信息?
func checkVideoRez(videoURL: NSURL) -> Bool {
let videoAssetSource = AVAsset.init(URL: videoURL)
let videoTrack = videoAssetSource.tracksWithMediaType(AVMediaTypeVideo)[0]
let size = videoTrack.naturalSize
let txf = videoTrack.preferredTransform
let realVidSize = CGSizeApplyAffineTransform(size, txf)
print(videoTrack)
print(txf)
print(size)
print(realVidSize)
...
}
Run Code Online (Sandbox Code Playgroud)
Max*_*Max 10
使用HLS时,曲目将始终返回nil.如果你有一个UIView子类layerClass用AVPlayerLayer 覆盖它来播放视频你可以得到大小
playerView.layer.videoRect
Run Code Online (Sandbox Code Playgroud)
这只是视频而不是整个图层的大小.
或者,您可以使用KVO观察项目的presentationSize
player.addObserver(self, forKeyPath: "currentItem.presentationSize", options: [.Initial, .New], context: nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5852 次 |
| 最近记录: |