在HLS流式視頻的情況下,代碼不起作用。
[_player.currentItem.asset tracks]是一個空數組。
所以「[_player.currentItem.asset tracksWithMediaType:AVMediaTypeVideo]」也返回nil。
我用不同的方式解決了你的同樣問題。
我從流式視頻中獲得圖像並計算出分辨率以獲得寬度和高度。
下面的代碼工作正常:
if ((_player.rate != 0) && (_player.error == nil)) // player is playing
{
AVAssetTrack *track = [[_player.currentItem.asset tracksWithMediaType:AVMediaTypeVideo] firstObject];
if (track != nil) // not HLS
{
CGSize naturalSize = [track naturalSize];
naturalSize = CGSizeApplyAffineTransform(naturalSize, track.preferredTransform);
_videoWidth = (NSInteger) naturalSize.width;
_videoHeight = (NSInteger) naturalSize.height;
}
else // HLS!!
{
CMTime currentTime = _player.currentItem.currentTime;
CVPixelBufferRef buffer = [_videoOutput copyPixelBufferForItemTime:currentTime itemTimeForDisplay:nil];
_videoWidth = CVPixelBufferGetWidth(buffer);
_videoHeight = CVPixelBufferGetHeight(buffer);
}
}
NSLog(@"Resolution : %ld x %ld", _videoWidth, _videoHeight);
你已經解決了這一個? – DixieFlatline