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

Дмитрий

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%
***************
При попытке публикации на Вашем тестовом сервере аналогичная ошибка.
 

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))
 

Дмитрий

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

Attachments

Last edited:

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, которое будет работать для вашего домена.
Процесс сборки и размещения расширения описан здесь.
Если по скриншарингу будут вопросы, создайте пожалуйста отдельную тему.
 

Max

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

Max

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