2012-06-21 33 views
6

Vì vậy, tôi đang cố phát một tệp âm thanh với tốc độ khác trong iOS 5.1.1 và tôi hoàn toàn không có may mắn. Cho đến nay, tôi đã thử đặt tốc độ của AVAudioPlayer:Tốc độ AVAudioPlayer

player = [[AVAudioPlayer alloc] initWithContentsOfURL:referenceURL error:&error]; 
player.enableRate = YES; 
player.rate = 1.5; 
player.numberOfLoops = 0; 
player.delegate = self; 
[player prepareToPlay]; 
[player play]; 

không có may mắn, âm thanh phát nhưng chỉ bỏ qua tốc độ tôi đưa ra. Tôi cũng đã thử AVPlayer:

avPlayer = [[AVPlayer alloc] initWithURL:referenceURL]; 
avPlayer.rate = 0.5; 
[avPlayer play]; 

Một lần nữa, nó phát nhưng chỉ bỏ qua tốc độ tôi đặt. Tôi đã thử một số tệp âm thanh khác nhau nhưng vì lợi ích của chuỗi này, tôi đã chọn Rooster-mono.wav từ danh mục này: http://sig.sapp.org/sounds/wave/

Có ai đã thành công với việc thay đổi tốc độ phát lại trên iOS 5.1.1 không? Hay không ai biết tôi đang thiếu gì ở đây?

Tôi làm điều này để thay đổi độ cao của một số mẫu, tôi nhận ra mình có thể thực hiện điều này bằng cách sử dụng RemoteIO hoặc một cái gì đó tương tự nhưng có vẻ như quá mức cho những gì tôi đang cố gắng đạt được (điều chỉnh tốc độ phát lại đơn giản) .

+0

sai lầm này bạn đã qua ở đây là plauer.rate = 1.5f. Bạn phải đặt "f" ở cuối của nó nếu không nó sẽ không hoạt động –

Trả lời

8

đây là một số mã mà tôi biết công trình, chỉ cần kiểm tra lại trong một ứng dụng tôi đang làm việc. như bạn đề cập, sử dụng setEnableRate:setRate: sẽ chỉ hoạt động với iOS 5.0 trở lên. vì vậy tôi sử dụng respondsToSelector: để thử nghiệm trên các thiết bị hay không thiết bị sẽ chấp nhận yêu cầu:

_noticeAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Rooster-mono" ofType:@"wav"]] 
                 error:nil];; 
if ([_noticeAudio respondsToSelector:@selector(setEnableRate:)]) 
    _noticeAudio.enableRate = YES; 
if ([_noticeAudio respondsToSelector:@selector(setRate:)]) 
    _noticeAudio.rate = 2.0; 

chạy trên một thiết bị iOS 5, nó thực hiện các đôi tỷ lệ thành công. chạy trên iOS 4.3, nó phát ở tốc độ bình thường.

vì vậy, cách duy nhất bạn sẽ nhận được tỷ lệ phù hợp là nếu thiết bị của bạn có iOS 5 trên đó.

+0

Làm việc tốt..Thanx – sohil

8

Sửa đổi mã để:

avPlayer = [[AVPlayer alloc] initWithURL:referenceURL]; 

[avPlayer play]; //call play first 

avPlayer.rate = 0.5; //then set rate 
+0

điều này là sai. Bạn cần phải thiết lập tỷ lệ đầu tiên và sau đó sử dụng chơi –

+0

Điều này thực sự làm việc cho tôi, không thể nói chính xác lý do tại sao. –

+0

Bạn hoàn toàn sai. Đặt tốc độ phát nó theo tỷ lệ. Phát bắt đầu phát video ở tốc độ mặc định 1.0. – simplexity

3

Đây là cách bạn làm điều đó.

giá trị tỷ lệ giữa 0.1f - 2.0f

player = [[AVAudioPlayer alloc] 
      initWithContentsOfURL:[NSURL fileURLWithPath:path] 
      error:&err]; 
player.volume = 0.4f; 
player.enableRate=YES; 
[player prepareToPlay]; 
[player setNumberOfLoops:0]; 
player.rate=2.0f; 
[player play]; 
1

Swift 2,0

let player = AVPlayer(URL: url) 
player.play() 
player.rate = 0.9 
Các vấn đề liên quan