Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

В данном случае RTMP-соединение будет закрыто, если в течение 120 секунд из него не было принято и в него не было отправлено никаких данных.

Поворот изображения публикуемого RTMP потока

При публикации RTMP потока на WCS, можно повернуть изображение, отправив необходимые RTMP-метаданные. Это может быть полезным для изменения ориентации картинки на лету при публикации потока с мобильного источника.

Для того, чтобы повернуть изображение на указанный угол, клиент должен прислать серверу RTMP-метаданные с полем 'orientation'. Поле может принимать следующие значения:

Значение поля

Угол поворота в градусах

0

0

1

90

2

180

3

270

Изображение поворачивается по часовой стрелке.

Настройка

Поворот изображения по метаданным включается при помощи следующей настройки в файле flashphoner.properties:

Code Block
themeRDark
video_filter_enable_rotate=true

Отметим, что поворот изображения работает только при использовании транскодирования.

Тестирование

1. Для теста используем:

WCS сервер с включенной поддержкой поворота изображения по метаданным

Приложение Flash Streaming для публикации и вращения изображения

Приложение Player для воспроизведения потока

2. Откройте приложение Flash Streaming. Введите имя потока test, укажите желаемые параметры публикации потока

Image Added

3. Нажмите Login, затем Start. Начнется публикация потока

Image Added

4. Откройте в другой вкладке или в другом браузере приложение Player, воспроизведите поток test

Image Added

5. В приложении Flash Player нажмите кнопку 180 в разделе Rotate camera. В приложении Player отобразится изображение, повернутое на 180 градусов по часовой стрелке

Image Added

Разработчику

Отправка метаданных для поворота изображения реализована в приложении Flash Player следующим образом:

code

Code Block
languageactionscript3
themeRDark
 private function rotate(degree:Number):void { var metaDataObj:Object = new Object(); switch(degree) { case 0: Logger.info("rotate camera to 0"); metaDataObj.orientation = 0; break; case 90: Logger.info("rotate camera to 90"); metaDataObj.orientation = 1; break; case 180: Logger.info("rotate camera to 180"); metaDataObj.orientation = 2; break; case 270: Logger.info("rotate camera to 270"); metaDataObj.orientation = 3; break; default: metaDataObj.orientation = 0; break; } sendMetaData(metaDataObj); } private function sendMetaData(data:Object):void{ if (publishStream != null) { publishStream.send("@setDataFrame", "onMetaData", data); } }

Известные проблемы

Excerpt Include
С другого сервера по RTMP
С другого сервера по RTMP
nopaneltrue

...

Решение: установить в параметрах кодировщика GOP равный или кратный частоте кадров публикуемого файла. Например, если публикуется файл с fps 25, необходимо указать GOP 50.

       private function rotate(degree:Number):void {

           var metaDataObj:Object = new Object();

           switch(degree) {

               case 0:

                   Logger.info("rotate camera to 0");

                   metaDataObj.orientation = 0;

                   break;

               case 90:

                   Logger.info("rotate camera to 90");

                   metaDataObj.orientation = 1;

                   break;

               case 180:

                   Logger.info("rotate camera to 180");

                   metaDataObj.orientation = 2;

                   break;

               case 270:

                   Logger.info("rotate camera to 270");

                   metaDataObj.orientation = 3;

                   break;

               default:

                   metaDataObj.orientation = 0;

                   break;

           }

           sendMetaData(metaDataObj);

       }

       private function sendMetaData(data:Object):void{

           if (publishStream != null) {

               publishStream.send("@setDataFrame", "onMetaData", data);

           }

       }