Ошибка при публикации RTMP

Discussion in 'Web Call Server 5' started by Дмитрий, May 17, 2017.

  1. Дмитрий

    Дмитрий New Member

    При попытке опубликовать поток:
    ffmpeg -re -i C:\ffmpeg\bin\ost.mp4 -preset ultrafast -acodec aac -strict -2 -vcodec libx264 -f flv rtmp://192.168.150.15:1935/live/str1
    FFMPEG выдает ошибку:
    *****************
    frame= 249 fps= 13 q=21.0 size= 1129kB time=00:00:10.48 bitrate= 881.7kbits/
    frame= 254 fps= 13 q=26.0 size= 1168kB time=00:00:10.69 bitrate= 894.5kbits/
    WriteN, RTMP send error 10054 (129 bytes)
    WriteN, RTMP send error 10053 (39 bytes)
    WriteN, RTMP send error 10038 (42 bytes)
    av_interleaved_write_frame(): Operation not permitted
    [flv @ 0000000002c100a0] Failed to update header with correct duration.
    [flv @ 0000000002c100a0] Failed to update header with correct filesize.
    Error writing trailer of rtmp://192.168.150.15:1935/live/str1: Operation not per
    mitted
    frame= 258 fps= 12 q=20.0 Lsize= 1194kB time=00:00:10.88 bitrate= 899.1kbits
    /s speed=0.52x
    video:942kB audio:291kB subtitle:0kB other streams:0kB global headers:0kB muxing
    overhead: unknown
    [libx264 @ 00000000004cc080] frame I:2 Avg QP:19.50 size: 15968
    [libx264 @ 00000000004cc080] frame P:256 Avg QP:20.60 size: 3722
    [libx264 @ 00000000004cc080] mb I I16..4: 100.0% 0.0% 0.0%
    [libx264 @ 00000000004cc080] mb P I16..4: 9.9% 0.0% 0.0% P16..4: 26.8% 0.0
    % 0.0% 0.0% 0.0% skip:63.3%
    [libx264 @ 00000000004cc080] coded y,uvDC,uvAC intra: 10.4% 40.6% 12.2% inter: 1
    5.2% 15.2% 5.2%
    ***************
    При попытке публикации на Вашем тестовом сервере аналогичная ошибка.
  2. Max

    Max Administrator Staff Member

    С роликом, который мы используем для тестирования и с ffmpeg работает.
    Ролик: https://flashphoner.com/downloads/media/VIDEO2findingnews.mp4
    ffmpeg: 3.2.3
    Если дадите ссылку на ваш ролик, скачаем и попробуем с ним.
    Если и с ним заработает, то проблема скорее всего в ffmpeg.
    Code:
    ffmpeg -re -i /tmp/VIDEO2findingnews.mp4 -preset ultrafast -acodec aac -strict -2 -vcodec libx264 -f flv rtmp://wcs5-eu.flashphoner.com/live/str2
    ffmpeg version 3.2.3 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)
      configuration: --enable-shared --disable-logging --enable-gpl --enable-pthreads --enable-libx264 --enable-librtmp --disable-yasm
      libavutil      55. 34.101 / 55. 34.101
      libavcodec     57. 64.101 / 57. 64.101
      libavformat    57. 56.101 / 57. 56.101
      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 @ 0x1c5b8c0] using cpu capabilities: none!
    [libx264 @ 0x1c5b8c0] profile Constrained Baseline, level 3.0
    [libx264 @ 0x1c5b8c0] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - 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/live/str2':
      Metadata:
        major_brand     : mp42
        minor_version   : 1
        compatible_brands: mp42mp41
        encoder         : Lavf57.56.101
        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))
    
  3. Дмитрий

    Дмитрий New Member

    Попробовали с вашим файлом. Секунд 10 показывает, потом прерывается. Обновили сервер. Ничего не изменилось. И еще: несмотря на установленное приложение Flashphoner Screen Sharing, тестовый пример просит его установить. Версия 2234.

    Attached Files:

    Last edited: May 19, 2017
  4. Max

    Max Administrator Staff Member

    Установите настройку в файл server.properties
    С ней должно работать.
    Code:
    keep_alive.algorithm=NONE
    Требует перезагрузки.
    Code:
    service webcallserver restart
    Сейчас разбираемся, поддерживает ли ffmpeg RTMP keep alives.
    Code:
    И еще: несмотря на установленное приложение Flashphoner Screen Sharing, тестовый пример просит его установить.
    Приложение Flashphoner Screen Sharing работает для домена flashphoner.com
    Если вы откроете вашу тестовую страницу под доменом, например test.flashphoner.com, это будет работать.
    Чтобы работало под вашим доменом, вам нужно собрать и разместить ваше собственное расширение в Chrome Store, которое будет работать для вашего домена.
    Процесс сборки и размещения расширения описан здесь.
    Если по скриншарингу будут вопросы, создайте пожалуйста отдельную тему.
  5. Дмитрий

    Дмитрий New Member

    Спасибо! Заработало.
  6. Max

    Max Administrator Staff Member

    Протестировали еще раз.
    С ffmpeg 3.2.3 есть проблема. Он не реагирует на пинги (keep alives).
    С ffmpeg 3.2.4 проблемы нет. Реагирует на пигни нормально, для него не нужно отклчать в keep_alive.algorithm=NONE
  7. Дмитрий

    Дмитрий New Member

    Спасибо.
    А как поведет себя сервер при обрыве потока и
    keep_alive.algorithm=NONE ?
  8. Max

    Max Administrator Staff Member

    При стриминге с ffmpeg, если что-то произойдет с сетью между ffmpeg и сервером, то соединение TCP просто зависнет и будет ждать TCP таймаута.
    Настройка keep_alive.algorithm=NONE действует также на подключившиеся плееры по протоколу Websocket.
    Если пользователь закроет браузер, отработает дисконнект и ресурсы освободятся.
    Если у пользователя отсоединить интернет кабель, то дисконнекта не произойдет, ресурсы не освободятся и произойдет небольшая утечка.
    Т.е. при включении keep_alive.algorithm=NONE мы отключаем чистку пользователей, которые потеряли коннект в результате обрыва в сети.

Share This Page