2015-05-12 68 views
1

我知道blank.caf音頻文件的URL,我在我的iPhone應用程序中創建(錄製)。我很關心它的大小,並且想把它的大小輸出到日誌中。我找不到這樣做的方法。我也很有興趣找出音頻文件的持續時間。如何在日誌中輸出CAF文件大小?

+0

你能分享一些您使用的是創建該文件的代碼?如果您使用Core Audio與AVFoundation,則API略有不同。 – dpassage

回答

2
import UIKit 
import AVFoundation 
extension NSURL { 
    var movieDuration: Double { 
     if checkResourceIsReachableAndReturnError(nil) { 
      return Double(CMTimeGetSeconds(AVURLAsset(URL: self, options: nil).duration)) 
     } 
     return 0 
    } 

} 
extension String { 
    var fileAttributes:NSDictionary { 
     if NSFileManager.defaultManager().fileExistsAtPath(self){ 
      return NSFileManager.defaultManager().attributesOfItemAtPath(self, error: nil)! as NSDictionary 
     } 
     return[:] 
    } 
    var fileSize:Int { 
     if NSFileManager.defaultManager().fileExistsAtPath(self){ 
      return Int(fileAttributes.fileSize()) 
     } 
     return 0 
    } 
    var fileSizeKB:String { 
     let styler = NSByteCountFormatter() 
     styler.allowedUnits = NSByteCountFormatterUnits.UseKB 
     styler.countStyle = NSByteCountFormatterCountStyle.File 
     return styler.stringFromByteCount(Int64(fileSize)) 
    } 
} 

測試

if let audioURL = NSURL(string:"http://freetone.org/ring/stan/iPhone_5-Alarm.mp3") { 
    let documentsDirectoryURL = NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as! NSURL 
    let destinationURL = documentsDirectoryURL.URLByAppendingPathComponent(audioURL.lastPathComponent!) 
    if let audioData = NSData(contentsOfURL: audioURL) { 
     audioData.writeToURL(destinationURL, atomically: true) 
     destinationURL.path!.fileSizeKB // 182KB 
     destinationURL.movieDuration  // 22.704s 
    } 
} 
0

以字節爲:

let attributes = NSFileManager.defaultManager() 
    .attributesOfItemAtPath(filePath, error: nil) as NSDictionary? 
let fileSize : UInt64 = attributes!.fileSize()