Я пишу сервер потоковой передачи RTSP, и мне нужна помощь. Я думаю, что я пробовал все и читал темы:
Получение видеопотока с IP-камеры на Android
Воспроизведение потока RTSP в проигрывателе VLC
и другие подобные им. Я также, конечно, прочитал много PDF-файлов и RFC.
Моя история: я написал rtsp-сервер, и проблема возникает, когда я отправляю ответ на заголовок DESCRIBE:
responseHeader.append(HeaderStates.OK);
responseHeader.append(CRLF);
responseHeader.append(CSeq);
responseHeader.append(CRLF);
responseHeader.append("session: ");
responseHeader.append(Long.valueOf(sessionID));
responseHeader.append(CRLF);
Date date = new Date();
responseHeader.append("Date: ");
responseHeader.append(date.toGMTString());
responseHeader.append(CRLF);
responseHeader.append("Content-Type: application/sdp");
responseHeader.append(CRLF);
responseHeader.append("Content-Base: ");
responseHeader.append(localAddress.getHostAddress());
responseHeader.append(":");
responseHeader.append(Integer.valueOf(localPort));
responseHeader.append(CRLF);
responseHeader.append(CRLF);
responseHeader.append("v=0");
responseHeader.append(CRLF);
responseHeader.append("o=- ");
responseHeader.append(date.getTime());
responseHeader.append(" ");
responseHeader.append(date.getTime());
responseHeader.append(" IN IP4 ");
responseHeader.append(localAddress.getHostAddress());
responseHeader.append(CRLF);
responseHeader.append("a=control:rtsp://192.168.1.143:55555");
responseHeader.append(CRLF);
responseHeader.append("s=RTSPSession");
responseHeader.append(CRLF);
responseHeader.append("m=video 55555 RTP/AVP 26");
responseHeader.append(CRLF);
responseHeader.append("a=rtpmap:26 JPEG/90000");
responseHeader.append(CRLF);
responseHeader.append("a=mimetype:video/JPEG");
responseHeader.append(CRLF);
//responseHeader.append("a=control:trackID=1");
responseHeader.append(CRLF);
responseHeader.append(CRLF);
где HeaderStates.OK — «200 OK», SessionID — System.currentTimeMillis(), CRLF = «\r\n», а responseHeader начинается с «RTSP/1.0»
затем VLC (клиент на моем ПК выдает необработанное исключение и падает), SMPlayer читает заголовок и показывает его в журнале, но не отвечает.
Иногда я получаю в журнале SMPlayer сообщение об ошибке в SDP, но я думаю, что причиной этой ошибки является слишком долгая отладка.
Мой вопрос: что я сделал не так? Почему нет заголовка SETUP от клиента?