IceCast与iPhone头问题

我正在尝试使用Icecast服务器与我的iPhone应用程序。 我正在为我的icecast服务器创build一个源客户端。 目前我正在使用NSURL级别发送请求来创build一个挂载点到服务器。 但是,我觉得这还不够。 我必须使用任何其他核心库,如CFNetworks或BSD套接字。 但我不确定。 任何人都可以帮我一下,哪个库适合iPhone实现icecast。

第二件事是当我为Icecast请求创build挂载点时, 我使用以下链接 – Icecast 2:协议描述,使用C#

但是由于没有密钥,我无法发送SOURCE /mountpoint ICE/1.0

我发送像 –

  NSMutableString *requestString = [NSMutableString stringWithFormat:@"http://192.168.1.99:8000"]; NSLog(@"Request String = %@", requestString); NSURL *url = [NSURL URLWithString:requestString]; NSMutableURLRequest *requestURL = [NSMutableURLRequest requestWithURL:url]; [requestURL setHTTPMethod:@"GET"]; [requestURL addValue:@"SOURCE /mp3test ICE/1.0" forHTTPHeaderField:@"SOURCE"]; [requestURL addValue:@"audio/mpeg" forHTTPHeaderField: @"Content-Type"]; [requestURL setValue:@"Basic c291cmNlOmhhY2ttZQ==" forHTTPHeaderField:@"Authorization"]; [requestURL setValue:@"This is my server name" forHTTPHeaderField:@"ice-name"]; [requestURL setValue:path forHTTPHeaderField:@"ice-url"]; [requestURL setValue:@"Rock" forHTTPHeaderField:@"ice-genre"]; [requestURL setValue:@"128" forHTTPHeaderField:@"ice-bitrate"]; [requestURL setValue:@"0" forHTTPHeaderField:@"ice-private"]; [requestURL setValue:@"1" forHTTPHeaderField:@"ice-public"]; [requestURL setValue:@"This is my server description" forHTTPHeaderField:@"ice-description"]; [requestURL setValue:@"ice-samplerate=44100;ice-bitrate=128;ice-channels=2" forHTTPHeaderField:@"ice-audio-info"]; NSLog(@"Request URL Value = %@",requestURL); NSURLResponse *response; NSError *error; NSData *responseData = [NSURLConnection sendSynchronousRequest:requestURL returningResponse:&response error:&error]; if(error != nil){ NSLog(@"%@",[error description]); } 

我的回应是和HTML代码 –

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Icecast Streaming Media Server</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0"> <h2>Icecast2 Status</h2> <br><div class="roundcont"> <div class="roundtop"><img src="/corner_topleft.jpg" class="corner" style="display: none"></div> <table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4"><tr><td bgcolor="#656565"> <a class="nav" href="admin/">Administration</a><a class="nav" href="status.xsl">Server Status</a><a class="nav" href="server_version.xsl">Version</a> </td></tr></table> <div class="roundbottom"><img src="/corner_bottomleft.jpg" class="corner" style="display: none"></div> </div> <br><br>&nbsp; <div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a> </div> </body> </html> 

这是一个不好的回应。 任何人都可以引导我,我怎样才能发送一个干净利落的请求,并得到回应。 我也没有得到如何创build一个挂载点后发送mp3数据到服务器。 如何创build一个stream并将其发送到icecast。

任何帮助将不胜感激。

我正在用GET方法发送请求,这是一个错误的方法。 我用了 –

[requestURL setHTTPMethod:@"SOURCE /mountpoint ICE/1.0"];

我可以在icecast服务器上创buildmount。

我还join了mp3文件数据来播放文件

  //get data from the file url so we can start recording with some file NSData *audioData = [NSData dataWithContentsOfURL:fileURL]; //add audio to stream and add the stream to request for sending data NSInputStream *inputStream = [NSInputStream inputStreamWithData:audioData]; [request setHTTPBodyStream:inputStream]; 

它能够播放歌曲数据。 但是目前我不知道为什么它只播放一大块数据。 我正在研究添加大量的数据stream。