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/avassettrackhttps://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/finding_metadata_valuesを参照することもできます

于 2020-05-30T09:09:13.037 に答える