Jump to content
Cesbo Community
  • Announcements

    • RadioSintetica

      Information   10/21/18

      Registration on the forum temporarily closed! For support requests, please contacat us: https://cesbo.com/help
      Our community in Telegram: @cesbo_en (English language) , @cesbo_ru (Russian language) , @cesbo_es (Spanish Language)
fyrer

Модуль к астре для сборки EPG / XMLTV

Recommended Posts

пробую по аналогии сделать,но получаю PANIC: unprotected error in call to Lua API ([main] /etc/astra/scripts/epg.lua:271: table index is nil)

может конечно проблема вообще не связана с dvb или без

 

Удалось отловить сию ошибку сугубо на 85E на одном канале RTG HD:

PANIC: unprotected error in call to Lua API ([main] /etc/astra/scripts/epg.lua:271: table index is nil)

Aborted (core dumped)

 

 

a0 = dvb_tune({ type = "S2", adapter=1, tp = "11920:H:28800", lnb = "9750:10600:11700", modulation="QPSK" })

make_channel({ name = "RTG HD",         input = { "dvb://a0#pnr=1206$cas_data=0027&cam=c0" }, output = { "udp://239.0.0.0:1234", "epg://ec#pid=18&name=rtghd" } })

 

если убрать output с коллектором, то все работает (включая все каналы на этом транспондере).

Share this post


Link to post
Share on other sites
vnc    1

 

У вас идет в кодировке ISO 8859-9. Она в астре отсутствует. Я писал в свое время функцию для ISO 8859-4. 

Сейчас к сожалению нет времени.

Можно сделать небольшой хак

 

modules/astra/iso8859.c

    else if(charset_id < 0x10)
    {
        switch(charset_id)
        {
            case 0x01: return (char *)iso8859_5_decode(&data[1], size - 1); // Cyrillic
            case 0x03: return (char *)iso8859_7_decode(&data[1], size - 1); // Greek
++          case 0x05: return (char *)iso8859_1_decode(&data[1], size - 1); // hack for iso 8859_9
            default: break;
        }

8859_9 -практически  идентична 8859_1 за исключением того, что 4 символа исландского языка заменены на турецкие. Вам для немецкого всего должно хватить. 

 

 

 

Спасибо!

Все работает!

Share this post


Link to post
Share on other sites

4.4.78 ошибка при компиляции:

........
   CC: modules/softcam/decrypt.o
   CC: modules/udp/input.o
   CC: modules/udp/output.o
BUILD: astra
modules/epg/epggrab.o: In function `on_ts':
epggrab.c:(.text+0x51a): undefined reference to `TS_PID'
collect2: error: ld returned 1 exit status
make: *** [astra] Error 1

Share this post


Link to post
Share on other sites

Может стоит уже этот модуль вшить в астру по-умолчанию? Полезная штука то.

Уже начали процесс. Мои парсеры дескрипторов уже в 4.4

 

 

4.4.78 ошибка при компиляции:

........
   CC: modules/softcam/decrypt.o
   CC: modules/udp/input.o
   CC: modules/udp/output.o
BUILD: astra
modules/epg/epggrab.o: In function `on_ts':
epggrab.c:(.text+0x51a): undefined reference to `TS_PID'
collect2: error: ld returned 1 exit status
make: *** [astra] Error 1

гляну на днях, сейчас завале немного работой((

Share this post


Link to post
Share on other sites

 

4.4.78 ошибка при компиляции:

........
   CC: modules/softcam/decrypt.o
   CC: modules/udp/input.o
   CC: modules/udp/output.o
BUILD: astra
modules/epg/epggrab.o: In function `on_ts':
epggrab.c:(.text+0x51a): undefined reference to `TS_PID'
collect2: error: ld returned 1 exit status
make: *** [astra] Error 1

 

в файле modules/epg/epggrab.c находим функцию on_ts. Исправляем в ней TS_PID на TS_GET_PID (411 строчка)

 

должно быть так:

static void on_ts(module_data_t *mod, const uint8_t *ts)
{
     if(TS_GET_PID(ts) == mod->pid) {
        mpegts_psi_mux(mod->eit, ts, on_eit, mod);
     }
}

Share this post


Link to post
Share on other sites

Заметил вот такую ошибку при коллекте епг:

Nov 28 09:57:20: INFO: Epg collected
Nov 28 09:57:20: ERROR: [dvb_input 1:0] dvr read error, try to reopen [Value too large for defined data type]
Nov 28 09:57:21: INFO: [Teleputeshestviya #1] Bitrate:0Kbit/s
Nov 28 09:57:21: ERROR: [Teleputeshestviya] No active input
Nov 28 09:57:21: INFO: [Teleputeshestviya #1] Bitrate:2219Kbit/s
Nov 28 09:57:21: INFO: [Teleputeshestviya] Activate input #1

 

После этой ошибки битрейт на всех канала становится 0, и опять восстанавливается, ну и конечно этот разрыв виден для пользователя.

 
Кто-нибудь сталкивался с этим?

Share this post


Link to post
Share on other sites

 

в файле modules/epg/epggrab.c находим функцию on_ts. Исправляем в ней TS_PID на TS_GET_PID (411 строчка)

 

должно быть так:

static void on_ts(module_data_t *mod, const uint8_t *ts)
{
     if(TS_GET_PID(ts) == mod->pid) {
        mpegts_psi_mux(mod->eit, ts, on_eit, mod);
     }
}

 

Спасибо, помогло! Все собралось.

Share this post


Link to post
Share on other sites

Сборка астры (успешно):

 

root@debian-tv:~/cesbo-astra-659197e6ad49# bash ./configure.sh
Cleaning previous build...
CLEAN: astra

Compiler Flags:
TARGET: i486-linux-gnu
CC: gcc
CFLAGS: -O2 -fomit-frame-pointer -I. -Wall -Wextra -pedantic -fno-builtin -msse -msse2 -march=native -pthread -D_FILE_OFFSET_BITS=64 -Wstrict-prototypes -std=iso9899:1999 -D_GNU_SOURCE

Check modules:
OK: ./main.c
OK: ./core
OK: ./lua
OK: ./modules/asi
OK: ./modules/astra
SKIP: ./modules/biss_encrypt
./modules/biss_encrypt: error: libdvbcsa is not found. use --with-libdvbcsa option
OK: ./modules/dvb
OK: ./modules/epg
OK: ./modules/file
OK: ./modules/http
OK: ./modules/inscript
SKIP: ./modules/mixaudio
./modules/mixaudio: error: module is under development
OK: ./modules/mpegts
OK: ./modules/softcam
OK: ./modules/udp

Linker Flags:
VERSION: 4.4.83
OUT: astra
LDFLAGS: -ldl -lm -lpthread -lrt -lrt -lcrypto

Install Path:
BINARY: /usr/bin/astra
root@debian-tv:~/cesbo-astra-659197e6ad49# make && make install
CC: main.o
CC: core/event.o
CC: core/list.o
CC: core/log.o
CC: core/socket.o
CC: core/thread.o
CC: core/timer.o
CC: core/utils.o
CC: lua/lapi.o
CC: lua/lauxlib.o
CC: lua/lcode.o
CC: lua/lctype.o
CC: lua/ldebug.o
CC: lua/ldo.o
CC: lua/ldump.o
CC: lua/lfunc.o
CC: lua/lgc.o
CC: lua/llex.o
CC: lua/lmem.o
CC: lua/loadlib.o
lua/loadlib.c: In function ‘ll_sym’:
lua/loadlib.c:142:21: warning: ISO C forbids conversion of object pointer to function pointer type [-pedantic]
CC: lua/lobject.o
CC: lua/lopcodes.o
CC: lua/lparser.o
CC: lua/lstate.o
CC: lua/lstring.o
CC: lua/ltable.o
CC: lua/ltm.o
CC: lua/lundump.o
CC: lua/lvm.o
CC: lua/lzio.o
CC: lua/lbaselib.o
CC: lua/lbitlib.o
CC: lua/lcorolib.o
CC: lua/ldblib.o
CC: lua/linit.o
CC: lua/liolib.o
CC: lua/lmathlib.o
CC: lua/loslib.o
CC: lua/lstrlib.o
CC: lua/ltablib.o
CC: modules/asi/input.o
CC: modules/astra/module_lua.o
CC: modules/astra/module_stream.o
CC: modules/astra/crc32b.o
CC: modules/astra/sha1.o
CC: modules/astra/base64.o
CC: modules/astra/md5.o
CC: modules/astra/strhex.o
CC: modules/astra/astra.o
CC: modules/astra/log.o
CC: modules/astra/timer.o
CC: modules/astra/utils.o
CC: modules/astra/json.o
CC: modules/astra/iso8859.o
CC: modules/astra/pidfile.o
CC: modules/dvb/src/fe.o
CC: modules/dvb/src/ca.o
CC: modules/dvb/input.o
CC: modules/dvb/dvbls.o
CC: modules/dvb/ddci.o
CC: modules/epg/epggrab.o
CC: modules/file/input.o
CC: modules/file/output.o
CC: modules/http/parser.o
CC: modules/http/utils.o
CC: modules/http/server.o
CC: modules/http/request.o
CC: modules/http/modules/redirect.o
CC: modules/http/modules/static.o
CC: modules/http/modules/websocket.o
CC: modules/http/modules/upstream.o
CC: modules/http/modules/downstream.o
CC: modules/inscript/inscript.o
CC: modules/mpegts/src/pcr.o
CC: modules/mpegts/src/psi.o
CC: modules/mpegts/src/pes.o
CC: modules/mpegts/src/types.o
CC: modules/mpegts/analyze.o
CC: modules/mpegts/channel.o
CC: modules/mpegts/transmit.o
CC: modules/softcam/FFdecsa/FFdecsa.o
CC: modules/softcam/cam/cam.o
CC: modules/softcam/cam/newcamd.o
CC: modules/softcam/cas/irdeto.o
CC: modules/softcam/cas/viaccess.o
CC: modules/softcam/cas/dre.o
CC: modules/softcam/cas/conax.o
CC: modules/softcam/cas/nagra.o
CC: modules/softcam/cas/videoguard.o
CC: modules/softcam/cas/mediaguard.o
CC: modules/softcam/cas/cryptoworks.o
CC: modules/softcam/cas/bulcrypt.o
CC: modules/softcam/cas/exset.o
CC: modules/softcam/cas/griffin.o
CC: modules/softcam/decrypt.o
CC: modules/udp/input.o
CC: modules/udp/output.o
BUILD: astra
INSTALL: /usr/bin/astra

 

 

Астра:

root@debian-tv:~/cesbo-astra-659197e6ad49# astra

Astra 4.4.83Usage: astra APP [OPTIONS]
 

Конфиг файла:

 

#!/usr/bin/astra

require("epg")

adapter_0 = dvb_tune({
type = "S",
adapter = 0,
fec = "5/6",
tp = "11656:v:24800",
lnb = "9750:10600:11700"
})

epgcoll = epg_collector({
name = "epgcoll1",

format = "xmltv", --[[ =xmltv / =json / =table ]]

sleep_tm = 120, --[[ждем 120сек после появления новой программы перед вызовом callback]]

callback = function(data)
print(data)

--Отправка на сервер по HTTP POST
--[[
_send_http({
host = "192.168.0.55",
port = 80,
path = "/"
}, data);
]]

end
})

cam= newcamd({
name = "Orinon-10981",
host = "***",
port = 12000,
user = "***",
pass = "***",
key = "0102030405060708091011121314",
timeout = 30,
disable_emm = true,
})

make_channel({
name = "Channel Name",
input = {
"dvb://adapter_0#pnr=725&cam=cam"

},
output = {
"udp://239.25.0.130:1234",
"epg://epgcoll#pid=18"

}
})

 

 

 

запускаю и получаю

root@debian-tv:~/cesbo-astra-659197e6ad49# astra --relay /root/orion
PANIC: unprotected error in call to Lua API (/root/orion:3: module 'epg' not found:
        no field package.preload['epg']
        no file './epg.lua')
Аварийный останов

что делаю не так?

Share this post


Link to post
Share on other sites

в 4.4 исчезли все внешние lua и упоминания о /etc/astra. Надо добавить:

 

package.path="/etc/astra/scripts/epg.lua"
require("epg")

 

но и после этого равно что-то криво:

 

PANIC: unprotected error in call to Lua API ([main] /etc/astra/scripts/epg.lua:291: attempt to index global 'parse_addr' (a nil value))
Aborted (core dumped)

Share this post


Link to post
Share on other sites

Есть идея, как сделать временный костыль для epg пока не порехтуют 4.4:

 

astra 4.4 занимается раскодированием как ей и положено, но в конфиге указываем также сливать транспондер или поканально на loopback (127.x.x.x),

а уже 4.3.118(с патчем epg) ловит эти каналы с лупбека и выгребает из них epg (раскодировать ничего не нужно при этом).

Share this post


Link to post
Share on other sites

Есть идея, как сделать временный костыль для epg пока не порехтуют 4.4:

 

astra 4.4 занимается раскодированием как ей и положено, но в конфиге указываем также сливать транспондер или поканально на loopback (127.x.x.x),

а уже 4.3.118(с патчем epg) ловит эти каналы с лупбека и выгребает из них epg (раскодировать ничего не нужно при этом).

 

Спасибо за идею.

 

Вот так всё работает:

 

make_channel({
    name = "Channel Name",
    input = {
        "udp://172.16.0.1@239.78.1.1:1234#pnr=4321",
    },
    output = {
        "epg://epgcoll#pid=18&name=name"
    }
})
 

 

pnr нужно указывать обязательно. Иначе - нихт арбейтен.

Share this post


Link to post
Share on other sites

I have a problem with that:

 

 

[root@st02 astra_epg]# ./run.lua

PANIC: unprotected error in call to Lua API ([main] /root/astra_epg/scripts/epg.lua:291: attempt to index global 'parse_addr' (a nil value))
Przerwane (zrzut pamięci)
[root@st02 astra_epg]#

 

My version of astra is: 

 

 

 
Feb 27 15:34:37: INFO: Astra 4.4.135
 

 

Is there a solution for that? Thanks!

Share this post


Link to post
Share on other sites

I have a problem with that:

 

 

My version of astra is: 

 

Is there a solution for that? Thanks!

 

no. as a workaround - you can install 4.3.118 with EPG module and catch outgoing streams (from astra 4.4) to grab epg

Share this post


Link to post
Share on other sites

У кого-то есть рабочий пример конфига, для отправки файла на сервер методом POST, что-то не хочет идти?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×