2017-07-03 68 views
4

我正在製作一個視頻編輯應用程序,其中每個視頻以沒有任何視頻部分被裁剪的方式平方。爲此,如果是縱向視頻,它包含左側&右側的黑色部分和橫向視頻,它包含視頻底部頂部&的黑色部分。黑色部分是視頻的一部分,它們不適用於AVPlayerViewController。這裏是樣本,enter image description hereSwift - 如何獲得視頻維度?

我需要覆蓋這些黑色部分與一些CALayers

將會有什麼CALayer的框架(的CGRect)?

我得到了包含黑色部分的naturalSize屬性的視頻尺寸。

有什麼辦法可以獲得沒有黑色部分的視頻尺寸? (我的意思是實際視頻內容的尺寸)或 有沒有辦法獲得視頻黑色區域的CGRect

+0

有我理解正確嗎?你需要視頻的寬高比嗎? –

+0

不...縱橫比不會幫助我解決問題 –

+0

@ pigeon_39你有解決方法..請幫助我我堅持在同一個問題上。 –

回答

5

試試這個:

var mediaAspectRatio: Double! // <- here will be set aspect ratio for video with url 

private func initAspectRatioOfVideo(with fileURL: URL) { 
    let resolution = resolutionForLocalVideo(url: fileURL) 

    let width = resolution?.width 
    let height = resolution?.height 

    mediaAspectRatio = Double(height!/width!) 
} 

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

希望它可以幫助

+0

可能是你沒有得到我的問題... –

+0

@ pigeon_39也許。 –

+0

這太神奇了。非常感謝。顯然只是使用「自然大小」不起作用,但你的代碼是偉大的!謝謝! –