如何在 android 中使用 icecast 客户端发送带有音频的标题和艺术家姓名

How to send title & artist name with audio using icecast client in android

以下代码按预期工作,可以向上流式传输到 icecast 服务器。但我想发送额外的信息,如标题、艺术家和流。我尝试添加 ice-title、ice-artist、标题、艺术家等标签。但它没有添加标题和艺术家

s = new Socket(server,port_num);
Log.d("VS", "Socket Created");
out =  new BufferedOutputStream(new DataOutputStream(s.getOutputStream()));
Log.d("VS", "Output Stream Established");
output = new PrintWriter(out);
Log.d("VS", "Send Header");
output.println("SOURCE /"+mountpoint+" ICE/2.0");
output.println("Authorization: Basic "+authString);
output.println("ice-name:"+title);
output.println("ice-url:echonet.cc");
output.println("TITLE="+title);
output.println("ARTIST="+generalUsername);
output.println("ice-username:"+generalUsername); 
output.println("ice-user:"+generalUsername);
output.println("content-type: application/x-ogg");
output.println("User-Agent: App");                  
output.println("ice-private: 0");
output.println("ice-public: 1");
output.println("ice-audio-info: ice-samplerate="+sampleRate_string+"ice-quality="+quality_string+";ice-channels="+channel_string);
output.println("ice-audio-info: ice-samplerate=8000;ice-bitrate=128;ice-channels=2");
output.println("\r\n");
output.println("\n");
output.flush();
Log.d("VS", "Header sent");
reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (String line; (line = reader.readLine()) != null;) {
   if (line.equals("")) break;
   Log.d("VS", "Responce From Server");
   Log.d("VS",line);
}

我对 android 编程还很陌生。如果代码或发送标题和艺术家的任何其他方式有任何问题,请告诉我。谢谢

通过修改本机代码解决了问题

我在vorbis recorder 的启动方法中添加了额外的参数并相应地修改了其他功能。 在 org_xiph_vorbis_encoder_VorbisEncoder.c 和 org_xiph_vorbis_encoder_VorbisEncoder.h 中为艺术家添加了额外参数 为了获得标题和艺术家作品。

有方法 vorbis_comment_add_tag(&vc,"Artist","your extra parameter"); 在 org_xiph_vorbis_encoder_VorbisEncoder.c 中,所以我们只需将参数传递给它即可。