Tôi đã cố gắng giải quyết vấn đề này trong 48 giờ tốt và không tìm ra bất kỳ thứ gì. Tôi có 2 đối tượng AVPlayer chơi các luồng trực tiếp http khác nhau. Rõ ràng, tôi không muốn cả hai họ chơi âm thanh cùng một lúc vì vậy tôi cần một cách để tắt tiếng một trong các video.Tắt tiếng luồng trực tiếp HTTP trong AVPlayer
của Apple suggests this cho tắt tiếng một track âm thanh chơi trong AVPlayer ...
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVPlayerItemTrack *track in [_playerItem tracks]) {
if ([track.assetTrack.mediaType isEqualToString:AVMediaTypeAudio]) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:CMTimeMakeWithSeconds(0,1)];
[audioInputParams setTrackID:[track.assetTrack trackID]];
[allAudioParams addObject:audioInputParams];
// Added to what Apple Suggested
[track setEnabled:NO];
}
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
[_playerItem setAudioMix:audioZeroMix];
Khi điều này không làm việc (sau nhiều lần lặp), tôi tìm thấy tài sản của AVPlayerItemTrack kích hoạt và cố gắng thiết lập đó để NO. Cũng không có gì. Điều này thậm chí không đăng ký làm bất cứ điều gì vì khi tôi thử NSLog (@ "% x", track.enabled), nó vẫn hiển thị là 1.
Tôi đang thua lỗ và không thể nghĩ một tài liệu khác tôi có thể đọc và đọc lại để có câu trả lời hay. Nếu bất cứ ai ngoài kia có thể giúp, điều đó thật tuyệt vời.
* Cập nhật: Tôi đã nhận một tổ chức của Apple và theo nhóm AVFoundation, nó là không thể để tắt hoặc vô hiệu hóa một ca khúc của một video HLS. Tôi, cá nhân, cảm thấy như thế này là một lỗi vì vậy tôi đã gửi một bug report (Bạn nên làm như vậy để nói với Apple rằng đây là một vấn đề). Bạn cũng có thể thử và gửi feature enhancement request qua trang phản hồi của họ.
Cảm ơn câu trả lời đã mở ra một con đường cho tôi vì một trong những vấn đề mà tôi đang cố gắng giải quyết. Tôi đang cố gắng làm điều tương tự với OpenAL nhưng không tìm ra một cách thẳng tiến để làm điều đó.Tôi biết bạn có thể giảm âm lượng thông qua alSourcef (sourceID, AL_GAIN, volume); nhưng không biết làm thế nào để tắt tiếng nó, là có một cách giải quyết nhanh chóng này? – chathuram