Перейти к содержимому
Калькуляторы

RTMP поток в Multicast

Приветствую всех!

Задача стоит следующая, Есть сервер CentOS 6 там развернут ffmpeg, на нём я принимаю RTMP и хочу отдать его например на udp://@224.0.42.1:10191, его должен принять Chameleon WISI по multicast. Но что-то не получается. Между сервером и WISI есть ещё DGS-3627. Может кто подскажет как организовать стримминг, хотябы ткуть носом в нормальную документацию.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На выходе из сервера есть мультикаст? Покажите параметры ffmpeg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Запускаю так:

ffmpeg -fflags genpts  -i rtmp://195.20.196.69:1935/tugantel/tugantel  -f mpegts -re  udp://@224.0.42.1:10191

Выводит следующее:

ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
 built on Jun  7 2013 18:31:22 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
 configuration: --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libvo-aacenc --enable-libxvid --disable-ffplay --enable-shared --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --extra-cflags=-fPIC --arch=x86_64
 libavutil      52. 18.100 / 52. 18.100
 libavcodec     54. 92.100 / 54. 92.100
 libavformat    54. 63.104 / 54. 63.104
 libavdevice    54.  3.103 / 54.  3.103
 libavfilter     3. 42.103 /  3. 42.103
 libswscale      2.  2.100 /  2.  2.100
 libswresample   0. 17.102 /  0. 17.102
 libpostproc    52.  2.100 / 52.  2.100
[flv @ 0xb26040] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from 'rtmp://195.20.196.69:1935/tugantel/tugantel':
 Metadata:
   author          : 
   copyright       : 
   description     : 
   keywords        : 
   rating          : 
   title           : 
   presetname      : Custom
   creationdate    : Thu Jun 20 16:30:44 2013
                   : 
   videodevice     : AVerMedia BDA Analog Capture
   avclevel        : 31
   avcprofile      : 66
   videokeyframe_frequency: 5
   audiodevice     : ?8=. 2E>4 (Realtek High Definit
   audiochannels   : 1
   audioinputvolume: 75
 Duration: N/A, start: 0.000000, bitrate: 1601 kb/s
   Stream #0:0: Video: h264 (Baseline), yuv420p, 720x576 [sAR 1:1 DAR 5:4], 1536 kb/s, 25 tbr, 1k tbn, 50 tbc
   Stream #0:1: Audio: mp3, 44100 Hz, mono, s16p, 65 kb/s
Output #0, mpegts, to 'udp://@224.0.42.1:10191':
 Metadata:
   author          : 
   copyright       : 
   description     : 
   keywords        : 
   rating          : 
   title           : 
   presetname      : Custom
   creationdate    : Thu Jun 20 16:30:44 2013
                   : 
   videodevice     : AVerMedia BDA Analog Capture
   avclevel        : 31
   avcprofile      : 66
   videokeyframe_frequency: 5
   audiodevice     : ?8=. 2E>4 (Realtek High Definit
   audiochannels   : 1
   audioinputvolume: 75
   encoder         : Lavf54.63.104
   Stream #0:0: Video: mpeg2video, yuv420p, 720x576 [sAR 1:1 DAR 5:4], q=2-31, 200 kb/s, 90k tbn, 25 tbc
   Stream #0:1: Audio: mp2, 44100 Hz, mono, s16, 128 kb/s
Stream mapping:
 Stream #0:0 -> #0:0 (h264 -> mpeg2video)
 Stream #0:1 -> #0:1 (mp3 -> mp2)
Press [q] to stop, [?] for help
frame=  666 fps= 28 q=31.0 Lsize=    3217kB time=00:00:26.65 bitrate= 988.6kbits/s dup=1 drop=60

Что ещё необходимо предоставить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tcpdump -i <интерфейс_выхода_мультикаста> "net 224.0.0.0/4" -c 20 -n -nn

 

Куда должен литься мультикаст?(на какой интерфейс) и покажите ip ro li. Возможно, нужно указать куда лить мультик путём ip ro add 224.0.0.0/4 dev ethX

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tcpdump -i <интерфейс_выхода_мультикаста> "net 224.0.0.0/4" -c 20 -n -nn

 

Куда должен литься мультикаст?(на какой интерфейс) и покажите ip ro li. Возможно, нужно указать куда лить мультик путём ip ro add 224.0.0.0/4 dev ethX

tcpdump на самом сервере показывает:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth7, link-type EN10MB (Ethernet), capture size 65535 bytes

17:17:51.120510 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.120523 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.120530 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 64

17:17:51.120546 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.120550 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 32

17:17:51.122878 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.122896 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 32

17:17:51.125270 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.125282 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 784

17:17:51.186062 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.186075 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 220

17:17:51.188234 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.188246 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.188254 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 64

17:17:51.188263 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.188274 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 784

17:17:51.190501 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.190507 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 220

17:17:51.192208 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 1472

17:17:51.192215 IP 192.168.1.201.58550 > 224.0.42.1.10191: UDP, length 408

20 packets captured

44 packets received by filter

0 packets dropped by kernel

ip ro li даёт следующее, сервер ещё является NAT'ом:

213.189.240.108/30 dev eth8 proto kernel scope link src 213.189.240.110

79.104.34.116/30 dev eth6 proto kernel scope link src 79.104.34.118

193.104.64.0/24 via 192.168.1.201 dev eth7

171.25.177.0/24 via 192.168.1.201 dev eth7

192.168.1.0/24 dev eth7 proto kernel scope link src 192.168.1.201

192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.201

172.25.0.0/24 dev eth7 proto kernel scope link src 172.25.0.3

172.24.0.0/16 via 192.168.1.1 dev eth7

172.24.0.0/16 dev eth7 proto kernel scope link src 172.24.0.3

172.25.0.0/16 via 192.168.1.1 dev eth7

172.16.0.0/16 via 192.168.1.1 dev eth7

172.16.0.0/16 dev eth7 proto kernel scope link src 172.16.0.3

169.254.0.0/16 dev eth7 scope link metric 1003

169.254.0.0/16 dev eth6 scope link metric 1004

169.254.0.0/16 dev eth8 scope link metric 1005

169.254.0.0/16 dev br0 scope link metric 1011

blackhole 192.168.0.0/16 proto zebra

10.0.0.0/8 via 192.168.1.1 dev eth7

224.0.0.0/4 dev eth7 scope link

default via 79.104.34.117 dev eth6

Маршрут вроде бы есть, в iptables следующее добавил:

в цепочке

*filter

:FORWARD ACCEPT [0:0]

:INPUT ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

#################

-A FORWARD -p igmp -i eth6 -o eth7 -j ACCEPT

-A INPUT -d 224.0.0.0/4 -j ACCEPT

-A FORWARD -d 224.0.0.0/4 -j ACCEPT

#################

в цепочке

*mangle

:FORWARD ACCEPT [0:0]

:INPUT ACCEPT [0:0]

:PREROUTING ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

############################

-A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1

############################

Мультикаст должен литься через eth7. Возможно на DGS-3627 надо что-то допилить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У ffmpeg ts udp выход неправильный - без группировки по mpeg пакетам - просто дует в сокет сколько влезет и в результате оборудование, ожидающие увидеть в одном udp пакете 7 аккуратно уложенных mpeg-ts ничего кроме мусора не видит.

Изменено пользователем vitalyb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в erlyvideo это вроде нормально сделано

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как быть-то в данной ситуации, просто первый раз в жизни столкнулся, а решения что-то пока нет. Где можно почитать How-to?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

llaann

нашел костыль, который я когда-то использовал (от какой версии не знаю):

--- udp.c.orig	2012-09-28 04:37:35.000000000 +0300
+++ udp.c	2012-11-02 15:03:11.000000000 +0200
@@ -795,6 +795,11 @@
            return ret;
    }

+    if (size < 188)
+	return 0;
+    if (size > 188*7)
+	size = 188*7;
+
    if (!s->is_connected) {
        ret = sendto (s->udp_fd, buf, size, 0,
                      (struct sockaddr *) &s->dest_addr,

Пропатчить, пересобрать, проверить. Если заработает - переписать костыль как полагается, этот вариант едва ли оптимальный и универсальный.

 

Или использовать другое ПО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

llaann

Multicast из сервера дует. Теперь ищите его у клиента также тспдампом или ваершарком. Если проблема в самих данных, то попробуйте другим софтом, например vlc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

llaann

Multicast из сервера дует. Теперь ищите его у клиента также тспдампом или ваершарком. Если проблема в самих данных, то попробуйте другим софтом, например vlc

Запускаю так:

vlc rtmp://195.20.196.69:1935/tugantel/tugantel --sout '#std{access=udp,dst=224.0.42.2:10191,ttl=10}' -vvv

Усебя в wireshark'е вижу что поток пошёл. На клиенте ничего не получаю. Пытаюсь у себя принять, также пусто. Может что-то не так делаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

llaann

Заджойнить поток на самом же сервере без извратов не получится. Лучше разберитесь почему он не доходит до клиента. На длинке посмотрите счётчики мультикаста на входе и на выходе. Если на входе растут, а на выходе нет, то разбирайтесь с его конфигом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вобщем решил проблему передачей в Unicast, вроде завелось. Теперь другая возникла проблема vlc кричит следующее, на клиенте появляются тормоза, рассыпание картинки, и через некоторое время вообще всё тормозит и vlc отключается:

 

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (1039737)

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (1009815)

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (979342)

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (948868)

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (918394)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (1039767)

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (887919)

[0x7f711c0044b8] access_output_udp access out debug: late packet for UDP input (857474)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (1009893)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (979437)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (948993)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (918537)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (888090)

[0x7f711c0044b8] access_output_udp access out debug: packet has been sent too late (857634)

[0x7f711c005ca8] main mux warning: late buffer for mux input (1372906)

[0x7f711c005ca8] main mux warning: late buffer for mux input (1335700)

[0x7f711c005ca8] main mux warning: late buffer for mux input (1297660)

[0x7f711c005ca8] main mux warning: late buffer for mux input (1261529)

[0x7f711c005ca8] main mux warning: late buffer for mux input (1223494)

 

Запускаю так:

cvlc /mnt/lv2/03.mkv --sout '#transcode{vcodec=h264,vb=0,scale=0,width=640,height=480,acodec=mpga,ab=256,channels=2,samplerate=44100}:std{access=udp{ttl=1},mux=ts,dst=192.168.1.222:10192}' -vvv
Изменено пользователем llaann

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно попробовать у vlc какой-нибудь буфер для кеша увеличить.

 

И еще, хамелеону в ряде случаев с UDP жизненно необходим IP поток с постоянным битрейтом, на счет RTP не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно попробовать у vlc какой-нибудь буфер для кеша увеличить.

 

И еще, хамелеону в ряде случаев с UDP жизненно необходим IP поток с постоянным битрейтом, на счет RTP не знаю.

А какой именно буфер? Про битрейт это vb=сколько-то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в erlyvideo это вроде нормально сделано

 

Что-то оно не особо работает.

 

При простейшем конфиге стопы по 6 секунд.

13:04:14.027724 IP 127.0.0.1.51973 > 127.0.0.1.5000: UDP, length 1316
13:04:14.027733 IP 127.0.0.1.51973 > 127.0.0.1.5000: UDP, length 1316
13:04:14.027749 IP 127.0.0.1.51973 > 127.0.0.1.5000: UDP, length 1316
13:04:14.027758 IP 127.0.0.1.51973 > 127.0.0.1.5000: UDP, length 1316
13:04:14.027766 IP 127.0.0.1.51973 > 127.0.0.1.5000: UDP, length 188
13:04:20.130441 IP 127.0.0.1.50831 > 127.0.0.1.5000: UDP, length 1316
13:04:20.130470 IP 127.0.0.1.50831 > 127.0.0.1.5000: UDP, length 1316
13:04:20.130484 IP 127.0.0.1.50831 > 127.0.0.1.5000: UDP, length 1316
13:04:20.130494 IP 127.0.0.1.50831 > 127.0.0.1.5000: UDP, length 1316
13:04:20.130504 IP 127.0.0.1.50831 > 127.0.0.1.5000: UDP, length 1316

 

2All Может быть есть какое-то решение для организации стриминга rtmp to multicast udp?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как куплю себе камеру с этим дуратским протоколом так попробую себе в софтину прикрутить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно не покупать - url rtmp://91.209.128.203/live/teledom3;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2All Может быть есть какое-то решение для организации стриминга rtmp to multicast udp?

Извиниюсь за археологию, но тоже возник подобный вопрос и кроме указанных выше решений ничего не нашел, а транслируют они не очень корректно(даже самая свежая версия ffmpeg). Не появилось ли чего нового?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую всех! Столкнулся с проблемой описанной в топике. Прошерстил весь интернет, очень мало информации по сприванию ffmpeg и vlc с wisi chameleon.

Может кто-нибудь все же решил эту проблему? Отзовитесь?

 

Пробовал уже кучу вариаций vlc и ffmpeg. Стиримил и файлы через udp(rtp) multicast(unicast), и потоки (включая рестрим потока сделанного самой wisi из dvb-c).

У ffmpeg понял, что проблема с битрейтом, не может он делать потоки с CBR, у него все-равно получаются VBR. А поскольку vlc использует тот же ffmpeg, то и у него тоже нет CBR. В общем, подскажите, если кто владеет, как с сервера скормить хамелеону IPTV? (

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую всех! Столкнулся с проблемой описанной в топике. Прошерстил весь интернет, очень мало информации по сприванию ffmpeg и vlc с wisi chameleon.

Может кто-нибудь все же решил эту проблему? Отзовитесь?

 

Пробовал уже кучу вариаций vlc и ffmpeg. Стиримил и файлы через udp(rtp) multicast(unicast), и потоки (включая рестрим потока сделанного самой wisi из dvb-c).

У ffmpeg понял, что проблема с битрейтом, не может он делать потоки с CBR, у него все-равно получаются VBR. А поскольку vlc использует тот же ffmpeg, то и у него тоже нет CBR. В общем, подскажите, если кто владеет, как с сервера скормить хамелеону IPTV? (

Попробуйте VLC

pcr=10,shaping=1000,use-key-frames,dts-delay=500

 

pcr="PCR interval in ms" allows to set at which interval Program Clock References will be sent

 

shaping="shaping delay in ms" to set the minimum interval during which the bitrate of the stream will remain constant, for variable bitrate streams

 

use-key-frames uses I frames as limits for the shaping intervals

 

и обновитесь до последней версии там есть буфер по входу на Хамелионе - регулируемый

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а если попробовать RTMP -> ffmpeg -> loopback , loopback -> astra -> output

Правда это увеличит задержку (зависит от буфера в астре), но я так пересобирал hls

в астре input = {"udp://226.1.1.2:1234#no_analyze"}, output = {"udp://224.1.1.211:1234#sync=3&cbr=2"}

в ffmpeg выход был -tune zerolatency -f mpegts udp://226.1.1.2:1234?pkt_size=1316

С таким конфигом у меня была задержка около 6-7 секунд

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот тут немного написал о моих попытках приёма и вещания через ffmpeg и vlc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

выглядит круто

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.