5
4

2 に答える 2

6

新しい iOS 7 の回答: AVPlayer には、'volume' と 'muted' という 2 つの新しいプロパティが追加されました。それらを使用してください!


そして、これがiOS 7以前の人生に対する元の答えです:

私は同じことを扱ってきました。ミュート ストリームと音声付きストリームを作成しました。ミュートまたはミュート解除するには、 を呼び出します[player replaceCurrentItemWithPlayerItem:muteStream]

バグレポートも提出しました。MacOS 10.7 にはこの機能があるようですAVPlayerが、iOS にはまだ対応していません。

AVAudioMixURL アセットでは機能しないことが記載されています。

もちろん、とにかく試してみましたが、あなたと同じように、実際には機能しないことがわかりました。

于 2012-08-20T22:47:23.810 に答える
1

これに対する最善の解決策は、ストリーム URL フィードに 2 つのオーディオ トラックを実際に埋め込むことです。1 つは通常のオーディオで、もう 1 つはミュートされたオーディオです。

ComPuff が実際に 2 つの別々の URL ストリームを作成する方法として提案した方法よりも、この方法で行う方が理にかなっていますが、これは必須ではありません。

オーディオトラックを切り替えるために使用できるコードは次のとおりです。

    float volume = 0.0f;

AVPlayerItem *currentItem = self.player.currentItem;
NSArray *audioTracks = self.player.currentItem.tracks;

DLog(@"%@",currentItem.tracks);

NSMutableArray *allAudioParams = [NSMutableArray array];

for (AVPlayerItemTrack *track in audioTracks)
{
    if ([track.assetTrack.mediaType isEqual:AVMediaTypeAudio])
    {
        AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
        [audioInputParams setVolume:volume atTime:kCMTimeZero];
        [audioInputParams setTrackID:[track.assetTrack trackID]];
        [allAudioParams addObject:audioInputParams];
    }
}

if ([allAudioParams count] > 0) {
    AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
    [audioMix setInputParameters:allAudioParams];
    [currentItem setAudioMix:audioMix];
}

唯一の問題は、実際には 3 つのトラック (2 つのオーディオ トラック) である必要があるのに、私のストリーム URL が 2 つのトラック (ビデオ用とオーディオ用に 1 つ) しか表示しないことです。これがストリームの URL の問題なのか、私のコードの問題なのかはわかりません! 誰でもコードの間違いを見つけることができますか?

于 2012-11-22T15:09:18.403 に答える