Доступ к потоку по rmtp

Renat

New Member
Добрый день, в примере Flash Streaming сказано, что доступ к потоку можно получить по протоколу rtmp. Однако при попытке подключения по протоколу rtmp:// подключения не присходит (сразу после NetConnection.Connect.Success получаем NetConnection.Connect.Closed). По протоколу rtmfp поток работает не стабильно т.е. видим видео и слышим звук в среднем 2 раза за 5 и оно часто "отваливается" само по себе.

1) Каким образом посмотреть поток через rtmp?
2) В коде примера используется nc.objectEncoding = ObjectEncoding.AMF0, однако при подключении выдается
NetConnection.Connect.Error c текстом "ObjectEncoding client must be in a AMF3 format (not AMF0)". Какую кодировку в итоге использовать AMF0 или AMF3?
 

Max

Administrator
Staff member
Добрый день.
В последних версиях есть баг при коннекте по RTMP.
https://wcs5-eu.flashphoner.com/demo2/flash-streaming
Если указывать домен, то коннект действительно не проходит:
Code:
rtmp://wcs5-eu.flashphoner.com:1935
Если же указать IP-адрес вместо домена, то коннект пройдет
Code:
rtmp://46.101.108.90:1935
Попробуйте этот workaround. А мы посмотрим как исправить эту ошибку.
2) В коде примера используется nc.objectEncoding = ObjectEncoding.AMF0, однако при подключении выдается
Какую кодировку в итоге использовать AMF0 или AMF3
Код с AMF3 у нас закомментирован и не используется в последних версиях.
Здесь пример:
https://github.com/flashphoner/flas...lash_client/streaming/src/streaming.mxml#L110
Поэтому используется AMF3 по-умолчанию.
 

Max

Administrator
Staff member
Проблема исправлена в сборке 2065
Ожидает верификации тестировщиками.
 

Ivan

Member
Крайняя нестабильность подключения к потоку у нас не изменилась.
Мы записали видео:
Слева Автор добавляет виедо с Ютуб, оно воспроизводится через ffmpeg, но подключение к потоку происходит 1 раз из 5-10.
Справа другой участник пытается посмотреть.
Причём админ панели flashphoner на вкладке flash Streaming видео проигрывается.
Но! Если во время проигрывания видео по rtmfp потоку ещё включить проигрывание по wss, то видео через 5-10-30 секунд останавливается на каком-то кадре и дальше не идёт. А вот звук продолжается.
 

Max

Administrator
Staff member
Нам нужно это воспроизвести с нашим демо-сервером.
Поэтому от вас нужен доступ к ffmpeg, с которым вы работаете, чтобы мы могли им запушить видеопоток на наш сервер для тестирования.
Либо полная инструкция, описывающая как застримить поток с ffmpeg и YouTube, версию ffmpeg, особенности сборки, и т.д.
Если тоже самое воспроизводится с обычным mp4 роликом, то это упростило бы тестирование.

Нестабильность RTMP подключения была исправлена в сборке 2065. При этом мы не тестировали с ffmpeg.
С нашим Flash-интерфейсом RTMP подключение работает стабильно в 100% случаев:

flash-streaming-stable.jpg
 

Ivan

Member
Проблемы работы ffmpeg и FlashPhonera нет.
Если после того, как пользователь сайта добавляет youtube ролик, получить его имя и вставить в ваш flash плеер (как в скриншоте выше) то он будет работать (100%).
Но вот в нашем флешплеере поток отображается очень не стабильно. Иногда отображается - иногда нет.
Сейчас у нас работает через FlashMediaServer и там такой проблемы в том же плеере никогда не возникает.

Мы можем дать доступ на наш FlashPhoner, что бы можно было посмотреть логи.
И как-то протестировать вместе с Вами.
Т.к. чтобы отправить youtube ролик на flashPhoner приходится использовать два процесса одним читать ролик и отправляеть поток в ffmpeg и им уже отправлять на FlashPhoner. Настроить это будет не так просто.
 

Max

Administrator
Staff member
Но вот в нашем флешплеере поток отображается очень не стабильно. Иногда отображается - иногда нет.
Ваш флэш плеер играет по RTMP или по RTMFP?
Может ли ваш плеер проиграть произвольную RTMP ссылку?
Если да, то мы могли бы протестировать ваш плеер с нашим сервером.
Сделайте пожалуйста отдельную тестовую страницу с вашим плеером, которой можно дать RTMP-URL на воспроизведение. Мы потестируем ваш плеер с нашими потоками.
Возможно проблема воспроизведется. Ссылку можете дать сюда или отправить на logs@flashphoner.com
Мы можем дать доступ на наш FlashPhoner, что бы можно было посмотреть логи.
И как-то протестировать вместе с Вами.
Так не получится. Нам нужно по возможности изолированное воспроизведение проблемы чтобы иметь возможность с ним работать автономно.
Т.к. чтобы отправить youtube ролик на flashPhoner приходится использовать два процесса одним читать ролик и отправляеть поток в ffmpeg и им уже отправлять на FlashPhoner. Настроить это будет не так просто.
Если дадите инструкцию, уверен, у нас получится.
 

Max

Administrator
Staff member
Добрый день
Протестировали с ffmpeg и RTMP. Подтвердилась ошибка, которую вы описывали.
Если во время проигрывания видео по rtmfp потоку ещё включить проигрывание по wss, то видео через 5-10-30 секунд останавливается на каком-то кадре и дальше не идёт. А вот звук продолжается.
Скорее всего эта же проблема была причиной нестабильного потока при заборе и трансляции видео с Youtube.
В итоге мы исправили проблему в последней сборке 2088
Тестировали следующим образом:
1. Запускаем ffmpeg командой
Code:
ffmpeg -re -i /tmp/VIDEO2findingnews.mp4 -preset ultrafast -acodec aac -strict -2 -vcodec libx264 -f flv rtmp://wcs5-eu.flashphoner.com:1935/live/stream1
2. Играем в Player или в Flash Streaming по rtmp
Играет стабильно, картинка есть, звук есть, в обоих интерфейсах без сбоев.
В Player видео может долго появляться в самом начале, но здесь скорее всего нужно понизить Key Frame Interval в ffmpeg чтобы ключевой кадр приходил быстрее.
Проверьте пожалуйста эту сборку с Youtube и сообщите о результатах.
 

Max

Administrator
Staff member
Здесь информация о сборке ffmpeg
Code:
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)
  configuration: --enable-shared --enable-gpl --enable-pthreads --enable-libx264 --enable-libvpx --enable-libvorbis --prefix=/usr/local/ffmpeg
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/VIDEO2findingnews.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    creation_time   : 2011-10-07T15:54:24.000000Z
  Duration: 00:03:06.28, start: 0.000000, bitrate: 1571 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 640x360, 1407 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2011-10-07T15:54:24.000000Z
      handler_name    : Apple Video Media Handler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 159 kb/s (default)
    Metadata:
      creation_time   : 2011-10-07T15:54:24.000000Z
      handler_name    : Apple Sound Media Handler
[libx264 @ 0x154e620] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX FMA3
[libx264 @ 0x154e620] profile Constrained Baseline, level 3.0
[libx264 @ 0x154e620] 264 - core 129 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, flv, to 'rtmp://wcs5-eu.flashphoner.com:1935/live/test222':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    encoder         : Lavf57.56.100
    Stream #0:0(eng): Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 640x360, q=-1--1, 25 fps, 1k tbn, 25 tbc (default)
    Metadata:
      creation_time   : 2011-10-07T15:54:24.000000Z
      handler_name    : Apple Video Media Handler
      encoder         : Lavc57.64.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(eng): Audio: aac (LC) ([10][0][0][0] / 0x000A), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2011-10-07T15:54:24.000000Z
      handler_name    : Apple Sound Media Handler
      encoder         : Lavc57.64.101 aac
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
frame= 2716 fps= 25 q=21.0 size=   21195kB time=00:01:48.44 bitrate=1601.2kbits/s speed=0.998x
 

Ivan

Member
Попробовали новую версию.
Проблема с зависанеим потока, при одновременном проигрывание rtmp и wss потоков, ушла.
Но вот нестабильность подключения осталась, но стало более стабильно подключаться. Причём у нас это ещё зависит от браузера (в хроме очень нестабильно).
Мы сделаем тестовый плеер, как Вы просили, в котором можно будет проигрывать произвольный поток.
 

Max

Administrator
Staff member
Code:
Но вот нестабильность подключения осталась, но стало более стабильно подключаться. Причём у нас это ещё зависит от браузера (в хроме очень нестабильно).
Опиште, как нестабильность выглядит в вашем случае, по шагам.
Например:
1. Отправляем поток через ffmpeg.
2. Подключаемся из Chrome / Player
3. Из 10 попыток, только 5 успешны.
Это хорошее описание нестабильности, его можно повторить и с ним можно работать.
 

Ivan

Member
Мы сделали тестовый плеер. http://flashplayer.vichatter.com/
Вы можете добавлять несколько потоков по кнопке Add и они одновременно будут работать.
НА данный момент происходит так:
Добавляю наш поток.
первый раз - не подключается, но изображения нет,
2-ой раз - изображение нет,
3- раз есть.
Ну может и на первый или на 10-ый.
Ещё стабильность подключения завивит от браузера.
 

Max

Administrator
Staff member
Не совсем понятно, как плеер должен работать.
Например, я публикую поток 555 с https://wcs5-eu.flashphoner.com/demo2/flash-streaming на наш сервер и здесь же забираю, чтобы его проверить:

streaming-from-flash-streaming-ui.jpg


Далее открываю ваш плеер и пытаюсь подключиться:

flash-rtmp-play.jpg


Кстати я не вижу там Flash - объекта, который бы проигрывал RTMP-поток.
Если же плеер играет WebRTC, просьба добавить два поля:
1) WCS URL
2) Stream Name
Как в примере Two Way Streaming
Тогда мы сможем подключиться к любому из наших тестовых серверов и протестировать потоки с вашим плеером.

two-way.jpg
 

Max

Administrator
Staff member
Сейчас SWF - объект стало видно. Можно тестировать дальше.

rtmp-player.jpg
 

Max

Administrator
Staff member
Проблему удалось воспроизвести и найти ее причину.
Похоже, что не поддерживается метод RTMP-протокола receiveVideo.
7.2.2.5. receiveVideo NetStream sends the receiveVideo message to inform the server whether to send the video to the client or not. The command structure from the client to the server is as follows:
https://www.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf
Попробуем добавить его обработку. После этого стримы должны начать работать.
Сообщу, как только будут продвижения.
 

Max

Administrator
Staff member
Исправили эту проблему в сборке 2103
Сборка еще не проходила верификацию. Когда верификация будет пройдена, я сообщу.
 

Ivan

Member
Установил последнюю версию, но нестабильность подключения осталась.
Причём в Mozile вроде бы всё стабильно.
Но вот в хроме 50 на 50

На скриншоте видно, что у 3 из 6 не прогрузилось видео
Я один и тот же поток добавлял несколько раз
 
Top