4

像这样加载 AVAsset 后:

AVAsset *asset = [AVAsset assetWithURL:url];

我想知道音轨的采样率是多少。目前,我得到这样的音轨:

AVAssetTrack *audioTrack = [[asset tracksWithMediaCharacteristic:AVMediaCharacteristicAudible] objectAtIndex:0];

哪个有效。但我似乎找不到任何类型的属性,即使在使用 Google 后也没有 ;-) ,这给了我采样率。这如何正常工作?甚至可能吗?(我开始越来越怀疑,因为谷歌搜索并没有给我很多信息......)

4

3 回答 3

7
let asset = AVAsset(url: URL(fileURLWithPath: "asset/p2a2.aif"))
let track = asset.tracks[0]
let desc = track.formatDescriptions[0] as! CMAudioFormatDescription
let basic = CMAudioFormatDescriptionGetStreamBasicDescription(desc)
print(basic?.pointee.mSampleRate)

我正在使用 Swift,所以它看起来有点不同,但它仍然可以与 Obj-C 一起使用。

print(track.naturalTimeScale)

似乎也给出了正确的答案,但由于名称,我有点担心。

于 2016-02-01T05:56:28.753 回答
0

找到了。我使用的是 MTAudioProcessingTap,所以在 prepare() 函数中我可以使用:

void prepare(MTAudioProcessingTapRef tap, CMItemCount maxFrames, const AudioStreamBasicDescription *processingFormat)
{
    sampleRate = processingFormat->mSampleRate;
    NSLog(@"Preparing the Audio Tap Processor");
}
于 2013-03-28T09:24:51.817 回答
0

使用 Swift 和 AVFoundation :

let url = Bundle.main.url(forResource: "audio", withExtension: "m4a")!
let asset = AVAsset(url: url)
if let firstTrack = asset.tracks.first {
    print("bitrate: \(firstTrack.estimatedDataRate)")
}

要在元数据中查找更多信息,您还可以查阅: https ://developer.apple.com/documentation/avfoundation/avassettrack https://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/finding_metadata_values

于 2020-05-30T09:09:13.037 回答