AVPlayer
HTTP ライブ ストリーミングを使用したラジオ アプリに使用しています。次に、そのオーディオ ストリームのレベル メーターを実装します。さまざまな周波数を示すレベルメーターが最適ですが、単純な左/右のソリューションが出発点として最適です。
を使用した例をいくつか見つけましAVAudioPlayer
た。しかし、必要な情報をオフにするための解決策が見つかりませんAVPlayer
。
誰かが私の問題の解決策を考えることができますか?
編集私はこのようなものを作成したい(しかしより良い)
編集Ⅱ
1 つの提案はMTAudioProcessingTap
、生のオーディオ データを取得するために を使用することでした。配列を使用して見つけることができた例[[[_player currentItem] asset] tracks]
は、私の場合は空の配列です。もう 1 つの提案[[_player currentItem] audioMix]
はnull
、私に適したものを使用することでした。
編集Ⅲ
何年も経った今でも、解決策はないようです。私は確かに進歩したので、それを共有します。
セットアップ中に、key-value オブザーバーを playerItem に追加しています。
[[[self player] currentItem] addObserver:self forKeyPath:@"tracks" options:kNilOptions context:NULL];
//////////////////////////////////////////////////////
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)changecontext:(void *)context
if ([keyPath isEqualToString:@"tracks"] && [[object tracks] count] > 0) {
for (AVPlayerItemTrack *itemTrack in [object tracks]) {
AVAssetTrack *track = [itemTrack assetTrack];
if ([[track mediaType] isEqualToString:AVMediaTypeAudio]) {
[self addAudioProcessingTap:track];
break;
}
}
}
- (void)addAudioProcessingTap:(AVAssetTrack *)track {
MTAudioProcessingTapRef tap;
MTAudioProcessingTapCallbacks callbacks;
callbacks.version = kMTAudioProcessingTapCallbacksVersion_0;
callbacks.clientInfo = (__bridge void *)(self);
callbacks.init = init;
callbacks.prepare = prepare;
callbacks.process = process;
callbacks.unprepare = unprepare;
callbacks.finalize = finalise;
// more tap setup...
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
AVMutableAudioMixInputParameters *inputParams = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:audioTrack];
[inputParams setAudioTapProcessor:tap];
[audioMix setInputParameters:@[inputParams]];
[[[self player] currentItem] setAudioMix:audioMix];
}
ここまでは順調ですね。これはすべて機能し、適切なトラックを見つけて、inputParams や audioMix などをセットアップできました。しかし、残念ながら、呼び出される唯一のコールバックは init コールバックです。他のどれもどの時点でも発砲しません。
さまざまな (種類の) ストリーム ソースを試しました。そのうちの 1 つは公式の Apple HLS ストリームです: http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8