Jump to content
Калькуляторы

Несколько http каналов в один udp поток как это реализовать

Добрый день, коллеги! Возникла такая необходимость: имеем несколько каналов в http и их надо загнать в один UDP поток и потом отправить на PBI, а затем в цифру. Каким софтом это можно реализовать, если у кого-то так работает, по возможности дайте примеры. Заранее благодарен.

Share this post


Link to post
Share on other sites

Добрый день, коллеги! Возникла такая необходимость: имеем несколько каналов в http и их надо загнать в один UDP поток и потом отправить на PBI, а затем в цифру. Каким софтом это можно реализовать, если у кого-то так работает, по возможности дайте примеры. Заранее благодарен.

А чем получаете http? Astra наверное будет лучшим решением

Share this post


Link to post
Share on other sites

Добрый день, коллеги! Возникла такая необходимость: имеем несколько каналов в http и их надо загнать в один UDP поток и потом отправить на PBI, а затем в цифру. Каким софтом это можно реализовать, если у кого-то так работает, по возможности дайте примеры. Заранее благодарен.

А чем получаете http? Astra наверное будет лучшим решением

А не подскажите, каким образом сконфигурировать Астру для этих нужд!

Share this post


Link to post
Share on other sites

Здравствуйте.

Я тоже ищу давно такое решение. Вот что можно сделать. комп с установленым VLC плеером, с несколькими сетевыми интерфейсами на нем можно организовать потоковое вещание, т.е. берем поток http потоком в URL работает(без смены формата(транскодирование) , можно потом на PBI сам проверял. но только один канал . На форуме здесь была похожая тема , что якобы можно организовать программно данное решение , я спросил что за программа но великие гуру мне не ответили,сказали что есть и все.Едем дальше , на компе можно открыть сразу несколько vlc плееров тоесть получится на выходе несколько UDP потоков затем шасси станции емр , там есть ип вход где можно мультипликсировать до 256 (точно не помню) UDP потоков (на выстовке пробывал настраивать). Вот как то так . Но если Вы узнаеете еще какое либо решение сообщите буду очень признатален.

Share this post


Link to post
Share on other sites
На форуме здесь была похожая тема , что якобы можно организовать программно данное решение , я спросил что за программа но великие гуру мне не ответили,сказали что есть и все.

Если вы про меня, то работы ведутся.

Касательно отдачи в юдп: там же, по хорошему, нужно бить поток на пакеты и пытаться отдавать со стабильным пакетрейтом, иначе не все девайсы/софтины такое нормально прожуют.

Попробуйте пока астру, там уже что то есть или можно дописать на луа.

Share this post


Link to post
Share on other sites

можно подробнее описать задачу? что значит "в 1 udp поток"? несколько программ в одном transport stream?

Share this post


Link to post
Share on other sites

можно подробнее описать задачу? что значит "в 1 udp поток"? несколько программ в одном transport stream?

Вообщем, предыстория: взяли мы как-то на работе и засунули в один udp поток на DMM-1400 несколько каналов и переконвертитровав в http с помощью Relaying отправили в соседний населенный пункт по интернету, там проделали обратную процедуру http-udp и скормили опять же DMM-1400 получив некоторое колл-во каналов. Плюсы: не надо использовать и содержать целый парк официальных карт. Минусы: операторы (провайдеры) разные, пинги не самые лучшие, происходят рассыпания. А теперь основная задача: Имеется колличество каналов в http из инета и надо их собрать в один udp поток, чтоб скормить его всё и тому же DMM-1400. Вопрос: как и чем его (udp поток) собрать?

.

Share this post


Link to post
Share on other sites

Имеется колличество каналов в http из инета и надо их собрать в один udp поток, чтоб скормить его всё и тому же DMM-1400. Вопрос: как и чем его (udp поток) собрать?

.

много слов, но вы в итоге так и не сказали, что подразумевается под "в 1 udp поток" ;))

 

по факту, все легко делается на gstreamer.

Share this post


Link to post
Share on other sites

Имеется колличество каналов в http из инета и надо их собрать в один udp поток, чтоб скормить его всё и тому же DMM-1400. Вопрос: как и чем его (udp поток) собрать?

.

много слов, но вы в итоге так и не сказали, что подразумевается под "в 1 udp поток" ;))

 

по факту, все легко делается на gstreamer.

Мы хотим сформировать поток в котором несколько программ в одном transport stream и который сможет прожевать PBI-1400, источником сего transport stream должны стать несколько transport stream потоков в формате http. На сием языке я высказался?

Share this post


Link to post
Share on other sites

Да всё понятно. Человек хочет кучу SPTS HTTP MPEG-TS в один MPTS UDP MPEG-TS. Куда яснее то.

 

Проблемы тут ровно две:

1) замикшировать потоки в один, перенумеровав пиды, потому что на разных SPTS потоках с вероятностью 99% они совпадут

2) выдать равномерно во времени. Это очень легко сделать, когда у тебя constant bitrate и железка, но очень сложно сделать когда у тебя variable bitrate и современная ОС.

Share this post


Link to post
Share on other sites

gst-launch-0.10  souphttpsrc do-timestamp=true is-live=true location=http://192.168.50.20:7004/ ! queue ! tsdemux name=demux0 mpegtsmux name=mux ! udpsink sync=true host=192.168.50.66 port=6000 demux0.video_0041 ! queue ! mux.  demux0.audio_0040 ! queue ! mux.  souphttpsrc do-timestamp=true is-live=true location=http://192.168.50.20:7003/ ! queue ! tsdemux name=demux1 demux1.video_0041 ! queue ! mux.  demux1.audio_0040 ! queue ! mux.

 

не оно?

Share this post


Link to post
Share on other sites

можно подробнее описать задачу? что значит "в 1 udp поток"? несколько программ в одном transport stream?

Вообщем, предыстория: взяли мы как-то на работе и засунули в один udp поток на DMM-1400 несколько каналов и переконвертитровав в http с помощью Relaying отправили в соседний населенный пункт по интернету, там проделали обратную процедуру http-udp и скормили опять же DMM-1400 получив некоторое колл-во каналов. Плюсы: не надо использовать и содержать целый парк официальных карт. Минусы: операторы (провайдеры) разные, пинги не самые лучшие, происходят рассыпания. А теперь основная задача: Имеется колличество каналов в http из инета и надо их собрать в один udp поток, чтоб скормить его всё и тому же DMM-1400. Вопрос: как и чем его (udp поток) собрать?

.

 

Аппаратное железо сделает вашу задачу решаемой. Передача через интернет без потерь с использованием избытчоности пакетов. Все это умеет делать ProStream. ЕСть деньги бращайтесь.

Share this post


Link to post
Share on other sites

можно подробнее описать задачу? что значит "в 1 udp поток"? несколько программ в одном transport stream?

Вообщем, предыстория: взяли мы как-то на работе и засунули в один udp поток на DMM-1400 несколько каналов и переконвертитровав в http с помощью Relaying отправили в соседний населенный пункт по интернету, там проделали обратную процедуру http-udp и скормили опять же DMM-1400 получив некоторое колл-во каналов. Плюсы: не надо использовать и содержать целый парк официальных карт. Минусы: операторы (провайдеры) разные, пинги не самые лучшие, происходят рассыпания. А теперь основная задача: Имеется колличество каналов в http из инета и надо их собрать в один udp поток, чтоб скормить его всё и тому же DMM-1400. Вопрос: как и чем его (udp поток) собрать?

.

 

Аппаратное железо сделает вашу задачу решаемой. Передача через интернет без потерь с использованием избытчоности пакетов. Все это умеет делать ProStream. ЕСть деньги бращайтесь.

Share this post


Link to post
Share on other sites

там проделали обратную процедуру http-udp

А можно примеры вызова как Вы это сделали? на сайте указано только хттп в хттп локальный

Share this post


Link to post
Share on other sites

Всё это сделает mptsd.

Сложит несколько spts в один mpts и ещё выровняет поток.

Сам им собираю udp мультикаст, но в примерах видел иhttp.

Это всё улетает в pbi-1400.

Самое интересное - 1400 нормально принимают до 25 мегабит, далее нюансы. А вот его близнец, только в коробке pbi-4000-42s2 свободно принимает до 50 мегабит в одном потоке.

Share this post


Link to post
Share on other sites

Аппаратное железо сделает вашу задачу решаемой. Передача через интернет без потерь с использованием избытчоности пакетов. Все это умеет делать ProStream. ЕСть деньги бращайтесь.

а вы ценник озвучьте ;)))

Share this post


Link to post
Share on other sites

Всё это сделает mptsd.

Подскажите, а под freebsd ее можно установить (если да то как) ?

Share this post


Link to post
Share on other sites

Подскажите, а под freebsd ее можно установить (если да то как) ?

Под фряхой не пробовал, но скорее всего кагобычно - ./конфигуре && маке && маке инсталл

Share this post


Link to post
Share on other sites

как обычно не получается пишет

#make

"Makefile",line 7:Need an operator

"Makefile",line 9:Need an operator

"Makefile",line 11:Need an operator

make: fatal errors encountered --cannot continue

А вот и Makefile

1 CC = $(CROSS)$(TARGET)gcc

2 STRIP = $(CROSS)$(TARGET)strip

3 BUILD_ID = $(shell date +%F_%R)

4 VERSION="v1.1"

5 GIT_VER = $(shell git describe --tags --dirty --always 2>/dev/null)

6 CFLAGS = -ggdb -Wall -Wextra -Wshadow -Wformat-security -Wno-strict-aliasing -O2 -D_GNU_SOURCE -DBUILD_ID=\"$(BUILD_ID)\"

7 ifneq "$(GIT_VER)" ""

8CFLAGS += -DGIT_VER=\"$(GIT_VER)\"

9 else

10 CFLAGS += -DGIT_VER=\"$(VERSION)\"

11 endif

12

13 RM = /bin/rm -f

14 Q = @

15

16 LIBS = -lpthread -lm -lrt

17

18 FUNCS_DIR = libfuncs

19 FUNCS_LIB = $(FUNCS_DIR)/libfuncs.a

20

21 TSFUNCS_DIR = libtsfuncs

22 TSFUNCS_LIB = $(TSFUNCS_DIR)/libtsfuncs.a

23

24 mptsd_OBJS = $(FUNCS_LIB) $(TSFUNCS_LIB) \

25 iniparser.o inidict.o pidref.o data.o config.o \

26 sleep.o network.o \

27 input.o \

28 output_psi.o output_mix.o output_write.o \

29 web_pages.o web_server.o \

30 mptsd.o

31

32 PROGS = mptsd

33 CLEAN_OBJS = $(PROGS) $(mptsd_OBJS) *~

34

35 all: $(PROGS)

36

37 $(FUNCS_LIB):

38 $(Q)echo " MAKE $(FUNCS_LIB)"

39 $(Q)$(MAKE) -s -C $(FUNCS_DIR)

40

41 $(TSFUNCS_LIB):

42 $(Q)echo " MAKE $(TSFUNCS_LIB)"

43 $(Q)$(MAKE) -s -C $(TSFUNCS_DIR)

44

45 mptsd: $(mptsd_OBJS)

46 $(Q)echo " LINK mptsd"

47 $(Q)$(CC) $(CFLAGS) $(mptsd_OBJS) $(LIBS) -o mptsd

48

49 %.o: %.c data.h

50 $(Q)echo " CC mptsd $<"

51 $(Q)$(CC) $(CFLAGS) -c $<

52

53 strip:

54 $(Q)echo " STRIP $(PROGS)"

55 $(Q)$(STRIP) $(PROGS)

56

57 clean:

58 $(Q)echo " RM $(CLEAN_OBJS)"

59 $(Q)$(RM) $(CLEAN_OBJS)

60

61 distclean: clean

62 $(Q)$(MAKE) -s -C $(TSFUNCS_DIR) clean

63 $(Q)$(MAKE) -s -C $(FUNCS_DIR) clean

 

 

В чем может быть причина?

Share this post


Link to post
Share on other sites

В чем может быть причина?

gmake?

Сам поклонник фряхи, но для iptv использую линукс, центос 5/6.

С фряхой както по iptv не срослось со времен когда она работала только с ss1 и то только по данным.

Share this post


Link to post
Share on other sites

чтобы gmake не выдавал ошибки нужно

 

1. в файле libtsfuncs/crc.c - в самом начале добавляем

#include <stdint.h>

 

и потом у функции ts_crc32_section исправляем тип возвращаемого результата на uint32_t

 

2. в файле libtsfuncs/tsdata.h - в самом начале добавляем

#include <stdint.h>

 

после этого mptsd прекрасно собирается gmake-ом, но при запуске получаем сообщение "usleep overhead is too high! Make sure the kernel is compiled with CONFIG_HIGH_RES_TIMERS."

 

это связано с функцией usleep, и как это обойти я так и не нашел, неужели пересобирать ядро?

Share this post


Link to post
Share on other sites

MPTSD установили, запустили, в VLC всё идёт, а PBI-1400PS2 не видит поток, видит только LINK STATUS: 100M

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this