Нужно записать видео из RTMP потока

Я абсолютный новичок в RTMP. Моя задача - создать Java-приложение, которое будет записывать видео с определенного URL-адреса RTMP.

У меня установлен RTMP-сервер (сервер Red5). Я проверил, что он работает и транслируется нормально. У меня есть red5.jar, предоставляющий мне все те классы Java, которые следует использовать для связи с Red5 (насколько я понимаю).

Я неплохо разбираюсь в Java, но понятия не имею, как подойти к этому приложению для записи. Потому что ни образца, ни документации, кроме Red5 Javadoc.

Поэтому, пожалуйста, помогите мне, предоставив любой образец или какие-либо ссылки или рекомендации. Я не могу использовать Flash или что-то еще, кроме Java.


person Alexander Kulyakhtin    schedule 16.05.2013    source источник
comment
вам нужно транслировать на red5 из java-клиента или вы хотите записать потоковую передачу в red5?   -  person fmodos    schedule 17.05.2013
comment
На самом деле и то, и другое, но, во-первых, меня интересует запись.   -  person Alexander Kulyakhtin    schedule 17.05.2013
comment
Я только что опубликовал для вас ответ с руководством по началу работы, но пока мне не удалось заставить какой-либо java-клиент rtmp работать над публикацией видео.   -  person fmodos    schedule 17.05.2013


Ответы (1)


Добавьте приведенный ниже код в свой класс Application в приложении red5. В нем есть коды для начала записи, сохранения записи на диск и остановки.

/*
*Start the recording
*/
public void recordVideo() {
     IConnection conn = Red5.getConnectionLocal();
     //get the stream published by the id "publishId"
     ClientBroadcastStream stream = (ClientBroadcastStream) getBroadcastStream(conn.getScope(), "publishId");
     try {
        // Save the stream to disk.
        stream.saveAs("streamName", false);
    } catch (Exception e) {
        throw new RuntimeException(e.getMessage());
    }
}
/*
*Stop the recording
*/
public void stopRecording(){
     IConnection conn = Red5.getConnectionLocal();
     ClientBroadcastStream stream = (ClientBroadcastStream) getBroadcastStream(conn.getScope(), "publishId");
    // Stop recording.
    stream.stopRecording();
    stream.stop();
}

JUV RTMP — это Java-клиент для протокола RTMP. Но он не предлагает кодек для потоковой передачи аудио/видео:

Воспроизведение и публикация аудио/видеопотоков (поддерживается сервером) (!реализации аудио/видео кодеков не включены!)

person fmodos    schedule 16.05.2013