2015-05-18 2 views
1

Я пробовал дюжину различных способов попробовать и передать this radio station. Однако, независимо от того, сколько разных способов я пытался, ни один из них не работал. Я понимаю, что предоставленная ссылка не является файлом .mp3 или действительно каким-либо звуковым файлом (я не уверен, где найти звуковой файл потоковой радиостанции), но я пробовал другие URL-адреса, то же отсутствие хороших результатов. Когда я пытаюсь это в моем методе viewdidload, нет никакой ошибки, но нет результата:AVPlayer/AudioPlayer: нет ошибки, но нет звука

NSError *sessionError = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 

// Init player 
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://tunein.com/radio/KOIL-1290-s33415/?streamid=61377300"]]; 
AVPlayer *audioPlayer = [AVPlayer playerWithPlayerItem: playerItem]; 
[audioPlayer play]; 

Я также попытался все эти способы (каждый путь в своем собственном/* ... * /):

/* 
NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://tunein.com/radio/KOIL-1290-s33415/"]]; 
NSError *error; 

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error]; 
audioPlayer.numberOfLoops = 0; 
audioPlayer.volume = 1.0f; 
[audioPlayer prepareToPlay]; 

if (audioPlayer == nil) 
    NSLog(@"%@", [error description]); 
else 
    [audioPlayer play]; 
*/ 


/* 
NSURL *url = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]; 

       // You may find a test stream at <http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8>. 

       AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 

       //(optional) [playerItem addObserver:self forKeyPath:@"status" options:0 context:&ItemStatusContext]; 

       AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; 

       player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 

       //(optional) [player addObserver:self forKeyPath:@"status" options:0 context:&PlayerStatusContext]; 

*/ 

/* 
NSString* resourcePath = @"http://streema.com/radios/play/7146"; //your url 
NSURL *url = [[NSURL alloc]initWithString:resourcePath]; 

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 

audioPlayer.delegate = self; 

[audioPlayer prepareToPlay]; 
[audioPlayer play]; 
*/ 
/* 
//download file and play from disk 
NSData *audioData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp3", docDirPath , @"listen"]; 
[audioData writeToFile:filePath atomically:YES]; 

NSError *error; 
NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error]; 
if (player == nil) { 
    NSLog(@"AudioPlayer did not load properly: %@", [error description]); 
} else { 
    [player play]; 
} 
*/ 

Редактировать: Я также пробовал this, но безуспешно.

ответ

0

Проблема, в каждом из ваших попыток, что ваш AVPlayer называют только локальной переменной:

AVPlayer *audioPlayer = [AVPlayer playerWithPlayerItem: playerItem]; 
[audioPlayer play]; 

Таким образом, вы говорите игрока к игроку, а затем ваш код приходит к и игрок будет уничтожен, прежде чем у него появится шанс начать играть что угодно! Если вы хотите, чтобы он играл, вам нужно сделать плеер persist хотя бы на время его воспроизведения. Сделайте его переменной экземпляра/свойство контроллера вида или другого экземпляра класса, который будет длиться так долго.

+0

Ничего себе. Хорошо, я сейчас пытаюсь. – Jameson

+0

К сожалению, я не думаю, что это было именно так. Например, я просто попробовал это: 'NSString * resourcePath = @" http://broadcast.infomaniak.net/radionova-high.mp3 "; NSURL * url = [[NSURL alloc] initWithString: resourcePath]; self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: ошибка URL: nil]; self.audioPlayer.delegate = self; [self.audioPlayer prepareToPlay]; [self.audioPlayer play]; ' со значением свойства: @property AVAudioPlayer * audioPlayer и AVAudipPlayerDelegate, и у меня пока нет результатов. – Jameson

+0

Я не говорю, что это было просто. Я ничего не знаю о конкретном URL, который вы пытаетесь использовать. Но то, что я сказал, правильно. Вы ничего не слышали, потому что ваш игрок мгновенно исчезал в клубе дыма, прежде чем он мог играть. Решим одну проблему за раз. Убедите себя, что теперь вы можете играть _something_ (что было невозможно раньше, с вашим кодом вы вообще ничего не могли бы сыграть). Тогда, если у вас есть другой вопрос о вашем URL-адресе, используя код, который на самом деле работает над чем-то, спросите об этом. – matt

Смежные вопросы