2014-04-15 39 views
0

我是互联网广播应用程序的noob。我正在使用icecast这个音频流,所以首先在我的Android应用程序中,我捕获ogg文件中的音频字节,所以我想发送这个文件进行音频流。将Ogg文件上传到Android中的音频流

我的问题如何发送这个完整的* .ogg文件或其他格式?任何帮助,请

这是我连接到的Icecast是工作

Socket s = new Socket("101.57.116.17", 8000); 
Socket s = new Socket("101.57.116.17", 8000); 
Log.d("VS", "Socket Created"); 
OutputStream out = s.getOutputStream(); 
Log.d("VS", "Output Stream Established"); 
PrintWriter output = new PrintWriter(out); 
Log.d("VS", "Send Header"); 
output.println("SOURCE /app ICE/2.3.3"); 
output.println("content-type: audio/mpeg"); 
output.println("Authorization: Basic c291cmNlOmhhY2ttZQ=="); 
output.println("ice-name: Server"); 
output.println("ice-genre: Rock"); 
output.println("ice-bitrate: 128"); 
output.println("ice-private: 0"); 
output.println("ice-public: 1"); 
output.println("ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2"); 
output.println(""); 
output.flush(); 
Log.d("VS", "Header sent"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(
     s.getInputStream())); 
String response = reader.readLine(); 
Log.v(LOG_TAG, response); 

HttpClient client = new DefaultHttpClient(); 

HttpGet httpGET = new HttpGet(
     "http://101.57.116.17:8000/admin/metadata?pass=hackme&mode=updinfo&mount=/app&song=akon"); 
httpGET.setHeader("Authorization", "Basic c291cmNlOmhhY2ttZQ=="); 
httpGET.setHeader("User-Agent", "(Mozilla Compatible)"); 

HttpResponse metaDataResponse = client.execute(httpGET); 

System.out.println("Response Code : " 
     + metaDataResponse.getStatusLine().getStatusCode()); 

BufferedReader rd = new BufferedReader(new InputStreamReader(
     metaDataResponse.getEntity().getContent())); 

StringBuffer result = new StringBuffer(); 
String line = ""; 
while ((line = rd.readLine()) != null) { 
    result.append(line); 
} 

回答

1

一旦你连接到icecast服务,并已获得授权,只是开始发送数据流下来相同的连接。

请注意,您需要按播放速率进行操作。否则,您将超出缓冲区,客户端的音频根本无法工作,或者会跳过。

+0

所以我有OGG文件,所以我需要读取代码中的文件字节,并将该字节发送到服务器使用相同的连接权? – Mick

+0

@米克这是正确的。 – Brad