Я пытаюсь использовать сервер Icecast с моим приложением для iPhone. Я создаю исходный клиент для своего сервера icecast. В настоящее время я использую уровень NSURL для отправки запроса на создание точки монтирования на сервер. Но как я чувствовал, что этого недостаточно. Я должен использовать любую другую базовую библиотеку, такую как CFNetworks или BSD Sockets. Но я не уверен. Может ли кто-нибудь помочь мне с тем, какая библиотека подходит для реализации icecast для iPhone.
Во-вторых, когда я реализую заголовок для запроса Icecast для создания точки монтирования. Я использую следующую ссылку - 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>
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a>
</div>
</body>
</html>
Это плохой ответ. Может ли кто-нибудь помочь мне, как я могу отправить аккуратный и чистый запрос и получить ответ. Я также не понял, как отправлять данные mp3 на сервер после создания точки монтирования. Как создать поток и отправить его на icecast.
Любая помощь будет оценена.