JAVA - JLayer - скрипучий звук и немного хаотичности, потоковое из SHOUTcast

1

Я сделал быстрое приложение на Java, чтобы узнать, могу ли я подключиться к моему SHOUTcast и потоку из него, и он работал со следующим кодом:

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.URL;

import javax.swing.JFrame;

import javazoom.jl.player.Player;

public class Start {

    public static void main(String[] args){

         JFrame window = new JFrame();
         window.setVisible(true);
         window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        try {
             URL url=new URL("http://devllama.pwnz.org:88");
             Socket socket=new Socket(url.getHost(), url.getPort());
             OutputStream os=socket.getOutputStream();
             String user_agent = "BrennynSabar/0.5";
             String req="GET / HTTP/1.0\r\nuser-agent: "+user_agent+"\r\nIcy-MetaData: 1\r\nConnection: keep-alive\r\n\r\n";
             os.write(req.getBytes());
             InputStream is=socket.getInputStream();
             BufferedInputStream bis = new BufferedInputStream(is);
             Player player = new Player(bis);
             player.play();
        } 
        catch (Exception e){
             e.printStackTrace();
        }

    }

}

Он подключается и воспроизводится, звук звучит довольно хорошо, но в фоновом режиме слышен случайный писк, я знаю его не сервер SHOUTcast, потому что вы можете подключиться с помощью VLC или что-то еще, и он не будет там. Также время от времени песня становится нестабильной, но я уверен, что ее связь. Любая помощь будет потрясающей, спасибо.

Теги:
shoutcast

1 ответ

1

Необязательная часть потока shoutcast - это периодические блоки метаданных.

В начале поддельного HTTP-соединения есть заголовки, которые этот код в настоящее время передается как данные MP3.

Один из этих заголовков может быть заголовком "ледяной меткой", установленным в N, где N - количество байтов между каждым блоком метаданных. Если заголовок отсутствует, то блоков метаданных нет. Первый байт блока метаданных содержит длину с шагом в 16 байт метаданных (например: 1 означает 16 байтов метаданных). Затем метаданные заполняются нулями в конце, если они не выходят на четные 16 байт.

Ваш MP3-декодер считывает эти блоки метаданных в виде MP3-данных, и он выдается в виде сообщений.

  • 0
    Вы не возражаете, если вы поделились примером кода?
  • 0
    Я только написал противоположное этому (потоковый сервер). Вам нужно будет проанализировать заголовки и выполнить более сложное копирование потока вместо слепой передачи необработанного потока в декодер MP3.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню