WAV-файл поддерживается на iOS?
У меня есть файл WAV, который хорошо играет в браузере:
Тем не менее, он не играет на моем симуляторе. Есть ли какие-то ограничения на поддержку файлов wav в iOS?
NSString *urlString = @"https://d5e5ca34-f670-4a7f-98c7-1643d83ecc1d:N8UAQQPXw10Z@stream.watsonplatform.net/text-to-speech/api/v1/synthesize?accept=audio/wav&voice=en-US_MichaelVoice&text=Hello%20world";
NSURL *url = [NSURL URLWithString:urlString];
NSData *audioData=[NSData dataWithContentsOfURL:url];
NSError *error;
self.player = [[AVAudioPlayer alloc] initWithData:audioData error:&error];
[self.player setVolume:1.0];
[self.player setDelegate:self];
[self.player setNumberOfLoops:0];
[self.player prepareToPlay];
[self.player play];
2 ответа
Что-то не так с вашим аудио-файлом wav. Это не совместимо с кодеками Apple. Я попробовал другой онлайн файл WAV, и это сработало. Вот мой рабочий код. Обязательно добавьте "Настройки безопасности транспорта транспорта" в файл info.plist.
В *.h
#import <UIKit/UIKit.h>
#include <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVAudioPlayer.h>
@interface v1MyCustomAudioPlay : UIViewController <AVAudioPlayerDelegate>
@property (nonatomic, retain) AVAudioPlayer *myAudioPlayer1;
В *.m
@implementation v1MyCustomAudioPlay
@synthesize myAudioPlayer1;
-(IBAction)playAudio
{
NSLog(@"playAudio ...");
NSString *urlString = @"http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/Samples/AFsp/M1F1-Alaw-AFsp.wav";
NSURL *fileURL = [NSURL URLWithString:urlString];
NSData *soundData = [NSData dataWithContentsOfURL:fileURL];
myAudioPlayer1 = [[AVAudioPlayer alloc] initWithData:soundData error:NULL];
myAudioPlayer1.delegate = self;
[myAudioPlayer1 play];
}
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
[myAudioPlayer1 stop];
NSLog(@"Finished Playing");
}
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error
{
NSLog(@"Error occurred");
}
WAV поддерживается. Пожалуйста, прочитайте ответы здесь в аналогичном вопросе: Поддерживаемые форматы аудио файлов в iPhone
Что касается вашего кода, я бы не стал использовать методы NSData для загрузки файла, а вместо этого использовал бы что-то более понятное, как показано в этом ответе: /questions/28583075/datawithcontentsofurl-ne-poluchaet-dannyie/28583087#28583087
Дело в том, что
Не рекомендуется использовать dataWithContentsOfURL: так как он синхронный и будет блокировать работу вашего приложения; если сервер не отвечает, он может заблокировать ваше приложение на долгое время.
Надеюсь это поможет.
Обновление: выполнение кода в примере проекта iOS не воспроизводит звук, поэтому вопрос остается нерешенным.
Кстати, если вы хотите использовать синтезатор речи, вы можете использовать встроенный iOS
NSString *string = @"Hello, World!";
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:string];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
[synthesizer speakUtterance:utterance];