从 AVAsset 中查找通道数
Posted
技术标签:
【中文标题】从 AVAsset 中查找通道数【英文标题】:Finding the number of Channels from an AVAsset 【发布时间】:2011-08-03 17:49:52 【问题描述】:我正在通过 AVAssets 加载音频资产。我想弄清楚资产中有多少通道(基本上是单声道或立体声)。最好的方法是什么?
【问题讨论】:
【参考方案1】:这似乎是我要找的。p>
AVAssetTrack* songTrack = [mAssetToLoad.tracks objectAtIndex:0];
NSArray* formatDesc = songTrack.formatDescriptions;
for(unsigned int i = 0; i < [formatDesc count]; ++i)
CMAudioFormatDescriptionRef item = (CMAudioFormatDescriptionRef)[formatDesc objectAtIndex:i];
const AudiostreamBasicDescription* bobTheDesc = CMAudioFormatDescriptionGetStreamBasicDescription (item);
if(bobTheDesc && bobTheDesc->mChannelsPerFrame == 1)
mIsMono = true;
【讨论】:
【参考方案2】:TurqMage 答案的 Swift 5 实现
//
// AVAssetTrack+IsStereo.swift
//
import AVFoundation
extension AVAssetTrack
var isStereo: Bool
for item in (formatDescriptions as? [CMAudioFormatDescription]) ?? []
let basic = CMAudioFormatDescriptionGetStreamBasicDescription(item)
let numberOfChannels = basic?.pointee.mChannelsPerFrame ?? 0
if numberOfChannels == 2
return true
return false
【讨论】:
以上是关于从 AVAsset 中查找通道数的主要内容,如果未能解决你的问题,请参考以下文章