【问题标题】:Getting an audio file size in kb以 kb 为单位获取音频文件大小
【发布时间】:2011-11-03 10:36:56
【问题描述】:

在我的应用程序中,我有一个以 caf 和 aac 格式存储的音频文件。我需要从音频 url 获取音频文件的大小(以 kb 为单位)。有没有办法达到这个要求?

【问题讨论】:

    标签: iphone objective-c audio avaudioplayer nsdata


    【解决方案1】:

    您可以使用NSFileManager 请求属性字典,然后从属性字典中获取大小:

    NSFileManager * fileManager = [NSFileManager new];
    NSError * error = 0;
    NSDictionary * attr = [fileManager attributesOfItemAtPath:path error:&error];
    // error checking
    unsigned long long size = [attr fileSize];
    [fileManager release];
    

    这在 iOS 2 和 OSX.5 上可用

    【讨论】:

    • 您好,它工作正常,谢谢。但我已经用下面提到的另一种方式做到了。
    • @Siddharth 是的,创建一个 NSData 表示并获取它的长度也可以,但是当您需要 NSData 表示时,您应该保留这种方法。如果您需要 NSData 表示,那么您的方法可以正常工作。如果您不需要 NSData 表示,那么应该支持我的方法,因为与从文件创建 NSData 实例相比,它会节省大量 CPU、磁盘活动和内存。
    • 好的。听起来不错。谢谢。
    【解决方案2】:

    你可以使用下面的命令行

    $ curl --head $URL_OF_AUDIO_FILE | grep 内容长度 | awk '{打印 ($2/1024);}'

    [[ PDF 示例]]

    卷曲 --head http://cran.r-project.org/doc/manuals/R-intro.pdf | grep 内容长度 | awk '{打印 ($2/1024);}'

    【讨论】:

      【解决方案3】:

      您可以使用 CF/NSURL 的属性访问器,它们适用于 iOS 5 及更高版本,以及 OSX.6 及更高版本:

      id value = 0;
      // Key for the file’s size in bytes, returned as an NSNumber object:
      NSString * key = NSURLFileSizeKey;
      NSError * error = 0;
      BOOL result = [audioFileURL getResourceValue:&value forKey:key error:&error];
      ... error checking here ...
      NSNumber * number = value;
      

      文件大小信息有多个键,另一个可能更适合您的需要。

      【讨论】:

      • 我试过这个,但我得到的数字是空的。我得到的结果 bool 为 YES。有什么原因吗?我哪里做错了?
      • 文件可读吗?同样,在 ios4 中,该方法什么也不做。
      • ok - 在 iOS 上,您可以在 5.0 及更高版本上使用此方法。我已经用这个细节更新了我的答案。
      • @Siddharth 我提供了一个具有更好向后兼容性的新答案。
      【解决方案4】:

      我通过将其转换为 NSData 并获取其长度属性来解决它。

          NSError *err = nil;
          NSData *audioData = [NSData dataWithContentsOfFile:file options:0 error:&err];
          NSString *audioLength = [NSString stringWithFormat:@"%dkB",[audioData length]/1000];
          NSLog(@"[audioData bytes]==%@",audioLength);
      

      【讨论】:

        猜你喜欢
        • 2020-04-20
        • 1970-01-01
        • 2023-02-04
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        • 2011-09-10
        • 1970-01-01
        • 2019-02-08
        相关资源
        最近更新 更多