4

AVPlayer を使用してライブ ストリーム (m3U8 ファイル) を再生しています。AVPlayer を使用すると完全に再生されますが、ミュートできません。

次のコードを使用してオーディオをミュートしています。

NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVPlayerItemTrack *track in _player.currentItem.tracks)
{
    if ([track.assetTrack.mediaType isEqual:AVMediaTypeAudio])
    {
        AVMutableAudioMixInputParameters *audioInputParams =    [AVMutableAudioMixInputParameters audioMixInputParameters];
        [audioInputParams setVolume:0.0 atTime:kCMTimeZero];
        [audioInputParams setTrackID:[track.assetTrack trackID]];
        [allAudioParams addObject:audioInputParams];
    }
}

AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
[[_player currentItem] setAudioMix:audioZeroMix];

同じコードを使用して、同じ AVPlayer コードで再生しているローカル ビデオ ファイルとプログレッシブ ビデオ URL をミュートできます。

(ライブ ストリーム ビデオ用の可能性があります。AVPlayer インスタンスで利用可能なトラックはボリューム ゼロに設定できますが、次のバッファリング トラックはボリュームで新鮮です。私は正しいですか、それとも他の理由ですか?)

誰でもこの問題について何か考えがあります。これに関するヘルプは非常に高く評価されます。

4

2 に答える 2

3

あなたの仮定は正しいです。HTTP ライブ ストリームを再生しているプレーヤーをミュートすることはできません。私はこれについてRADARを提出しました。

私のアプリでは、ストリームを制御するため、オーディオなしのストリームとオーディオ付きの同じストリームを生成し、2 つを切り替えてサウンドのオンとオフを切り替えます。それはあなたができる最善のことです。

AVAudioMix ソリューションは、ライブ ストリームでは機能しません。私は試した。ファイルベースのアセットでのみ機能するという下部のメモを見てください: http://developer.apple.com/library/ios/#qa/qa1716/_index.html

Mac 開発者は AVPlayer でミュート プロパティを取得しているようですが、iOS にはまだありません。

今のところ、可能であれば、ストリームの問題を回避する必要があります。

于 2012-08-20T22:38:33.400 に答える
1

回避策として、このクラスを使用してMPVolumeViewビデオの音量を調整できます。これにより、ユーザーは必要に応じてビデオをミュートできます。しかし、文書化されていない API を使用しないと、このスライダーの外観をカスタマイズできない可能性は低いです。

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame: CGRectMake(10, 37, 260, 20)] autorelease];

UIAlertView *volumeAlert = [[UIAlertView alloc] initWithTitle:@"Volume" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

[volumeView sizeToFit];
[volumeAlert addSubview:volumeView];
[volumeAlert show];
[volumeAlert release];
于 2012-09-06T12:57:42.533 に答える