Как отправить название и имя исполнителя со звуком с помощью клиента icecast в Android

Следующий код работает должным образом для восходящей потоковой передачи на сервер icecast. Но я хочу отправить дополнительную информацию, такую ​​​​как название, исполнитель вместе с потоком. Я попытался добавить такие теги, как ice-title, ice-artist, title, 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. Если есть какие-либо проблемы с кодом или каким-либо другим способом отправки названия и исполнителя, сообщите мне об этом. Спасибо


person danny    schedule 10.02.2015    source источник
comment
Это выглядит очень и очень неправильно. Просто используйте привязки libshout: stackoverflow.com/a/28192505/2648865   -  person TBR    schedule 13.02.2015


Ответы (1)


Проблема решена путем изменения собственного кода.

Я добавил дополнительный параметр в метод запуска регистратора vorbis и соответственно изменил другие функции. Добавлен дополнительный параметр для исполнителя в org_xiph_vorbis_encoder_VorbisEncoder.c и org_xiph_vorbis_encoder_VorbisEncoder.h, чтобы получить название и работу исполнителя.

В org_xiph_vorbis_encoder_VorbisEncoder.c есть метод vorbis_comment_add_tag(&vc,"Исполнитель","ваш дополнительный параметр");, поэтому нам просто нужно передать ему параметр.

person danny    schedule 13.02.2015