0

ラジオ ストリームの再生に AVPlayer を使用しています。プレーヤーを初期化するために、次のコードを使用しています:

self.asset = [AVAsset assetWithURL:self.url];
self.item = [AVPlayerItem playerItemWithAsset:self.asset];
self.player = [AVPlayer playerWithPlayerItem:self.item];

この質問を読みました 再生中の AVPlayer の音量を調整する

そして、スライダーの値で音量を設定しようとしています

- (void)setVolume:(float )volume
{
    _volume = volume;
    NSArray *audioTracks = self.asset.tracks;
    NSMutableArray *allAudioParams = [NSMutableArray array];

    for (AVAssetTrack *track in audioTracks) {
        AVMutableAudioMixInputParameters *audioInputParams =
        [AVMutableAudioMixInputParameters audioMixInputParameters];
        [audioInputParams setVolume:volume atTime:kCMTimeZero];
        [allAudioParams addObject:audioInputParams];
        [audioInputParams setTrackID:[track trackID]];
    }

    AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
    [audioMix setInputParameters:allAudioParams];
    NSLog(@"%@", self.player.currentItem);
    NSLog(@"%f", volume);
    [self.player.currentItem setAudioMix:audioMix];
}

私も設定しようとしています

[audioInputParams setVolume:volume atTime:self.player.currentTime];

しかし、その配列 (self.asset.tracks) にはトラックがなく、ボリュームには影響しません。(メタデータも取得できません)、AVAudioPlayerを使用してURLでオーディオストリームを再生できません

オーディオ プレーヤーと呼ばれる AVAudioPlayer クラスのインスタンスは、ファイルまたはメモリからのオーディオ データの再生を提供します。

Apple では、ネットワーク ストリームからキャプチャしたオーディオを再生する場合や、I/O レイテンシを非常に低くする必要がある場合を除き、オーディオの再生にこのクラスを使用することをお勧めします。

そのコードhttps://github.com/DigitalDJ/AudioStreamer/downloadsを使用してラジオ ストリームを再生することを考えています が、Audiotoolbox で音量を設定する方法がわかりません。

私を助けてください!ありがとう!

4

1 に答える 1

2

私は多くの解決策を試しましたが、それを行うための最良の方法は、インスタンスovMPVolumeVIewを実装することです。

 self.myViewVolume = [[MPVolumeView alloc] initWithFrame:CGRectMake(20, 330, 280, 50)];
[self.myViewVolume sizeToFit];
[self.view addSubview:self.myViewVolume];

これは、任意のUIViewに追加できます。クラスをMPVolumeViewに変更するだけです。MediaPlayerフレームワークを追加することを忘れないでください。

ストリームからメタデータを取得する場合は、次のことを行う必要があります。

 [playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:NULL];

これにより、任意のUILabelに情報を追加するだけで済みます

于 2012-11-25T22:29:03.837 に答える