Страница 1 из 1
Как сдампить мультикаст
Добавлено: 2016-04-12 20:56:53
Abyrvalg
Привет тебе, All!
Есть такая утилита
multicat. Она позволяет легко и непринуждённо сдампить прямо в консоли мультимедийный контент, идущий мультикастом.
Но, похоже, спроектирована она только для Linux. Попытки установить её на FreeBSD фейлятся. Попытки установить bitstream, от которого она зависит, - тоже.
В портах этих утилит нет.
Может быть, для FreeBSD существует аналог?
Как сдампить мультикаст
Добавлено: 2016-04-12 21:25:42
dekloper
Abyrvalg писал(а): Попытки установить её на FreeBSD фейлятся.
просто вы не умеете ее готовить..
The multicat suite of applications is very lightweight and designed to operate in tight environments. Memory and CPU usages are kept to a minimum, and they feature only one thread of execution. It is designed to run on Linux, FreeBSD and Mac OS X.
написано же - все пашет...
Как сдампить мультикаст
Добавлено: 2016-04-12 21:49:42
Abyrvalg
Буду признателен, если подскажете, что делать. Вроде бы ругань на отсутствие bitstream, но когда пытаюсь его установить, то требуются какие-то аргументы. Мне не приходилось ещё настолько плотно знакомиться с утилитой install, чтобы разобраться в этом.
Код: Выделить всё
[user@home /tmp/multicat-2.1]$ sudo make
Password:
cc -O2 -pipe -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE -g -c multicat.c
multicat.c:55:32: error: bitstream/ietf/rtp.h: No such file or directory
multicat.c:56:31: error: bitstream/mpeg/ts.h: No such file or directory
multicat.c:57:32: error: bitstream/mpeg/pes.h: No such file or directory
In file included from multicat.c:59:
util.h:59: error: field 'iph' has incomplete type
multicat.c: In function 'raw_Write':
multicat.c:282: error: 'struct udphdr' has no member named 'len'
multicat.c:292: warning: implicit declaration of function 'writev'
multicat.c: In function 'GetPCR':
multicat.c:753: warning: implicit declaration of function 'ts_get_pid'
multicat.c:755: warning: implicit declaration of function 'ts_validate'
multicat.c:760: warning: implicit declaration of function 'ts_has_adaptation'
multicat.c:760: warning: implicit declaration of function 'ts_get_adaptation'
multicat.c:761: warning: implicit declaration of function 'tsaf_has_pcr'
multicat.c:763: warning: implicit declaration of function 'tsaf_get_pcr'
multicat.c:763: warning: implicit declaration of function 'tsaf_get_pcrext'
...
Код: Выделить всё
[user@home /tmp/bitstream]$ sudo make install
INSTALL
usage: install [-bCcMpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
[-o owner] file1 file2
install [-bCcMpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
[-o owner] file1 ... fileN directory
install -d [-v] [-g group] [-m mode] [-o owner] directory ...
*** [install] Error code 64
Stop in /tmp/bitstream.
Как сдампить мультикаст
Добавлено: 2016-04-12 23:31:18
Alex Keda
сдаётся мне, инсталл у вас не той системы.
недостататочно ГНУтый ....
Как сдампить мультикаст
Добавлено: 2016-04-12 23:42:59
Abyrvalg
Уж какой есть... Где другой-то взять?
Система, если что, вот такая:
FreeBSD 9.1-RELEASE
Как сдампить мультикаст
Добавлено: 2016-04-13 8:37:14
pimlab
а если порпоробовать gmake
Как сдампить мультикаст
Добавлено: 2016-04-13 9:45:32
Abyrvalg
Сделал. Похоже, что-то получилось:
Код: Выделить всё
[user@home /tmp/bitstream]$ sudo gmake install
INSTALL /usr/local/include/bitstream
И действительно:
Код: Выделить всё
[user@home /]$ ll /usr/local/include/bitstream
total 44
drwxr-xr-x 9 root wheel 512B 13 апр 09:36 ./
drwxr-xr-x 90 root wheel 5,0k 13 апр 09:36 ../
drwxr-xr-x 2 root wheel 512B 13 апр 09:36 atsc/
-rw-r--r-- 1 root wheel 2,0k 13 апр 09:36 common.h
drwxr-xr-x 3 root wheel 512B 13 апр 09:36 dvb/
drwxr-xr-x 2 root wheel 512B 13 апр 09:36 ieee/
drwxr-xr-x 2 root wheel 512B 13 апр 09:36 ietf/
drwxr-xr-x 3 root wheel 512B 13 апр 09:36 mpeg/
drwxr-xr-x 2 root wheel 512B 13 апр 09:36 scte/
drwxr-xr-x 2 root wheel 512B 13 апр 09:36 smpte/
Далее, скопировал содержимое /usr/local/include/bitstream в каталог, где пытаюсь собрать multicat. Получаю всё ту же ошибку:
Код: Выделить всё
[user@home /tmp/multicat-2.1]$ sudo make
cc -O2 -pipe -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE -g -c multicat.c
multicat.c:55:32: error: bitstream/ietf/rtp.h: No such file or directory
multicat.c:56:31: error: bitstream/mpeg/ts.h: No such file or directory
multicat.c:57:32: error: bitstream/mpeg/pes.h: No such file or directory
In file included from multicat.c:59:
util.h:59: error: field 'iph' has incomplete type
multicat.c: In function 'raw_Write':
multicat.c:282: error: 'struct udphdr' has no member named 'len'
multicat.c:292: warning: implicit declaration of function 'writev'
...
Хотя файлы-то есть!
Код: Выделить всё
[user@home /tmp/multicat-2.1]$ ll bitstream/ietf/rtp.h
-rw-r--r-- 1 user wheel 5,5k 13 апр 09:36 bitstream/ietf/rtp.h
Где он их смотрит? Непонятно.
С gmake то же самое.
Как сдампить мультикаст
Добавлено: 2016-04-15 23:17:45
Abyrvalg
Проверил на FreeBSD 10.3: те же уши
Код: Выделить всё
% sudo make
cc -O2 -pipe -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE -g -c multicat.c -o multicat.o
multicat.c:55:10: fatal error: 'bitstream/ietf/rtp.h' file not found
#include <bitstream/ietf/rtp.h>
^
1 error generated.
*** Error code 1
Stop.
make: stopped in /tmp/multicat-2.1
Правда, когда я скопировал содержимое +/usr/local/include/bitstream/+ в подкаталог каталога с исходниками multicat, картина изменилась:
Код: Выделить всё
% sudo make
cc -O2 -pipe -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE -g -c multicat.c -o multicat.o
multicat.c:55:10: error: 'bitstream/ietf/rtp.h' file not found with <angled> include; use "quotes" instead
#include <bitstream/ietf/rtp.h>
^~~~~~~~~~~~~~~~~~~~~~
"bitstream/ietf/rtp.h"
multicat.c:56:10: error: 'bitstream/mpeg/ts.h' file not found with <angled> include; use "quotes" instead
#include <bitstream/mpeg/ts.h>
^~~~~~~~~~~~~~~~~~~~~
"bitstream/mpeg/ts.h"
multicat.c:57:10: error: 'bitstream/mpeg/pes.h' file not found with <angled> include; use "quotes" instead
#include <bitstream/mpeg/pes.h>
^~~~~~~~~~~~~~~~~~~~~~
"bitstream/mpeg/pes.h"
In file included from multicat.c:59:
./util.h:59:19: error: field has incomplete type 'struct iphdr'
struct iphdr iph;
^
./util.h:59:13: note: forward declaration of 'struct iphdr'
struct iphdr iph;
^
multicat.c:282:20: error: no member named 'len' in 'struct udphdr'
pktheader.udph.len
~~~~~~~~~~~~~~ ^
multicat.c:292:19: warning: implicit declaration of function 'writev' is invalid in C99 [-Wimplicit-function-declaration]
if ( (i_ret = writev( i_output_fd, iov, 2 )) < 0 )
^
1 warning and 5 errors generated.
*** Error code 1
Stop.
make: stopped in /tmp/multicat-2.1
То есть, файлы в итоге как будто нашлись, но всё равно всё пошло кувырком.
Как же всё-таки "приготовить" multicat под FreeBSD? Похоже, разработчики соврали, для красного словца написали о поддержке Фри, а на самом деле и не тестировали даже

Как сдампить мультикаст
Добавлено: 2016-04-17 10:29:51
Гость
Как сдампить мультикаст
Добавлено: 2016-04-18 0:23:09
Abyrvalg
Поставлено, я написал об этом несколькими сообщениями выше.
Как сдампить мультикаст
Добавлено: 2016-04-19 12:57:03
Abyrvalg
Неужто никому не приходилось решать подобную задачу?

Как сдампить мультикаст
Добавлено: 2016-04-19 13:39:12
guest
Abyrvalg писал(а):Неужто никому не приходилось решать подобную задачу?

далее, нужно правильно заменить __APPLE__ дефайны на __FreeBSD__, добавить опцию -D__FreeBSD__
и -lpthread, сборка разумеется gmake'ом, можно установить gcc и собирать им.
Если что-то не ясно, ну есть же список рассылки multicat-devel - спросите, подскажут, заодно, может
внесут соответствующие правки.
Как сдампить мультикаст
Добавлено: 2016-04-19 21:00:10
Abyrvalg
далее, нужно правильно заменить __APPLE__ дефайны на __FreeBSD__, добавить опцию -D__FreeBSD__
и -lpthread, сборка разумеется gmake'ом, можно установить gcc и собирать им.
Не подскажете ли, где и как правильно прописывать эти опции?
Пока я остановился на следующем:
Код: Выделить всё
$ sudo env CFLAGS=-I/usr/local/include gmake multicat
cc -I/usr/local/include -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE -g -c -o multicat.o multicat.c
cc -I/usr/local/include -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE -g -c -o util.o util.c
cc -o multicat multicat.o util.o -lrt
/usr/bin/ld: undefined reference to symbol `pthread_setschedparam@@FBSD_1.0' (try adding -lthr)
//lib/libthr.so.3: could not read symbols: Bad value
cc: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:32: ошибка выполнения рецепта для цели «multicat»
gmake: *** [multicat] Ошибка 1
Отправлено спустя 3 минуты 14 секунд:
Вывернулся, как и посоветовали:
Код: Выделить всё
sudo cc -o multicat multicat.o util.o -lthr
после чего инсталлировал, как выше.
Вроде прокатило. Буду проверять работоспособность завтра.
Как сдампить мультикаст
Добавлено: 2016-05-01 11:39:54
Abyrvalg
Всё работает как надо. Всем большое спасибо!