2015-01-22 1 views
0

Как определить разрешение в реальном времени в Red5? я переопределить streamPublishStart (IBroadcastStream поток), где (поправьте меня, если я ошибаюсь) запускается поток:Как определить разрешение в реальном времени в Red5?

public void streamPublishStart(IBroadcastStream stream) { 
     IConnection connection = Red5.getConnectionLocal(); 
    log.info("W3C x-category:stream x-event:publish c-ip:{} x-sname:{} x-name:{}", 
      new Object[] { connection != null ? connection.getRemoteAddress() : "0.0.0.0", stream.getName(), stream.getPublishedName() }); 

} 

Где я могу получить доступ поток объекта. Как я могу проверить его разрешение? Я пробовал stream.getMetaData(). GetHeader(), но он дает мне Заголовок имеет значение. У меня проблема с googled, и я не могу найти решение.

ответ

0

Вам необходимо будет декодировать входящие данные, чтобы получить необходимую вам информацию. Red5 не расшифровывает потоки из коробки. Единственная информация, которую мы вытаскиваем, это AVC и AAC закодированные «конфигурационные» данные, и я бы не назвал это «декодированием» per se. Конфигурация предоставит вам минимальную информацию о AVC/h.264 или AAC. Вы можете увидеть информацию о конфигурации в этих двух классах:

https://github.com/Red5/red5-io/blob/master/src/main/java/org/red5/codec/AVCVideo.java

https://github.com/Red5/red5-io/blob/master/src/main/java/org/red5/codec/AACAudio.java

«поток», показанный в методе подписи вы публикуемую будет ClientBroadcastStream в большинстве, если не во всех случаях. Вы можете просматривать входящие аудио- и видеоданные, расширяя этот класс или создавая собственный слушатель.

И наконец, метод getMetaData() вернет вам что-то полезное, если вещатель или источник файлов предоставили контент метаданных; кроме того, «Заголовок» не будет содержать битрейт.

класс

MetaData: https://github.com/Red5/red5-io/blob/master/src/main/java/org/red5/io/flv/meta/MetaData.java

класс Заголовок: https://github.com/Red5/red5-server-common/blob/master/src/main/java/org/red5/server/net/rtmp/message/Header.java

0

Поскольку это напрямую не возможно, я буду использовать FFmpeg для загрузки 5s часть и чем проверить это битрейта с ffprobe:

ffmpeg -t 5 -re -i "rtmp://192.168.1.102/ntcServer/glosno live=1 timeout=5" -y -c copy test.flv 
ffprobe -pretty test.flv 2>&1 | egrep 'bitrate: ' 

Спасибо, Mondain.

Смежные вопросы