IPTV stream demux

Fórumok

Van egy többcsatornás IPTV stream (MUX), amibe valahogyan bele szeretnék nézni. tvheadend-et próbáltam először, megadtam a kapott multicast IP-t és portot, és el is érem a MUX-ból az első csatornát, de csak azt. Gondolom valahogy demux-olni kellene, hogy a többi is elérhető legyen. De ha jól látom, a tvheadend IPTV esetén nem ad lehetőséget demux-ra.

Kísérleteztem még dvblast-tal is, de egyáltalán nem világos ennek a paraméterezése. Pl. a dvblast.conf-ban SID és PID értékeket kellene megadni. Utóbbiak elvileg meg is vannak, de hogy mire jó a SID és vajon mitől függ, milyen érték kell legyen...?

Szóval tippek, 5letek, kérdések jöhetnek!

Hozzászólások

Jéé ezek szerint másnak is vannak ilyen gondjai a TVHeadend-el nem csak nekem.
Írtam egy patch-et erre a problémára a tvheadendhez, csak lusta voltam beküldeni, ezek szerint megérné.

A SDI vagy másképpen ProgramNumber nagyon leegyszerűsítve az egyes csatornákhoz rendelt szám. Ha ezek megvannak akkor már nagy baj nem lehet.

dvblastconf:

#Comment
#MCAST IP alwaysOn SDI(ProgramNumber) [PIDs,]
#RTL Klub
239.3.3.3:33015@10.123.13.254/udp/dvb 1 15
#RTL Klub Teszt
239.3.3.3:33016@10.123.13.254/udp/dvb 1 16
#TV2
239.3.3.3:33020@10.123.13.254/udp/dvb 1 20

Ahol a 239.3.3.3:33020 -> ide küldje ki a leválogatott csomagot az @IP pedig csak annyi, hogy explicite ide bindeljen.

Futtani pedig így:
dvblast -D 239.33.33.105:58105/udp -C --config-file v_101_1_dvblast.conf & (Itt az Mcast ip a forrás [lehet, hogy neked nem multicastod van])

Sikerült megtalálnom a SID és PID értékeket a következő módon:

- tvheadend-ben felvettem a forrás multicast/MUX címét. Ahogy korábban írtam, így a látom is az első csatornát a MUX-ból
- a forrás MUX eth1 interfészen jön, aminek nincs IP címe
- indítottam egy dvblast-ot: ./dvblast -D source:port/udp/ifindex=1 -c ~/dvblast.conf
- eth0 a másik interfész, IP legyen 10.123.13.25 ahogy a példában írtad
- amikor egy másik gépről csatlakozok pl. vlc-vel a fent beállított csatornához: http://10.123.13.25:9981/stream/channelid/1 ekkor a dvblast kiír egy halom debug üzenetet, amiben fel van sorolva minden a MUX-ban lévő csatorna összes adata (video/audio PID-ek). Ha közben nézem az interfészek forgalmát (iftop/iptraf), ekkor megindul a forgalom: eth1: 40Mbit, eth0: 3Mbit.

Tehát megvan elvileg minden adat. A dvblast.conf így néz ki:

239.255.0.1:1234@10.123.13.25/udp/dvb  1  15

Ezután felvettem tvheadend-ben IPTV forrásként eth0 if-re group: 239.255.0.1, UDP port: 1234
Végül csatlakozom a távoli gépről vlc-vel a tvheadend 2. csatornához: http://10.123.13.25:9981/stream/channelid/2
Eredmény: semmi, No stream found

Ha kliensből nem csatlakozom az első csatornához (http://10.123.13.25:9981/stream/channelid/1), akkor az interfészeken semmi forgalom nem is látszik. Vajon mit rontok el?

Nem akarok izé lenni, de nekem már az is furcsa, hogy hogyan tudsz IP nélkül multicastra csatlakozni? Ez tudtommal nem valami szabályos.

De, hogy ontopic legyek
Multicast routing be van rendesen állítva? Értsd: meg van mondva a route táblában, hogy melyik multicast címet melyik interfészen várja?

Ez be van adva a kernelnek?
echo 1 > /proc/sys/net/ipv4/conf/eth1/rp_filter

Ha így sem megy, akkor
interfészek konfigja, route, dvblast kimenet ahol listáz mindent, dvblast konfig.
dvblast helyett, lehet ffprobe -i udp://mcastIP:port is.

A gyanúm az, hogy nem tud feliratkozni a multicast címre.

Nem tudom, hogy lenne szabályos, de az eth1 interface egy olyan switch-portba van dugva, ami abba a vlan-ba van állítva, ahol a stream érkezik. IP címet mit is tudnék beállítani? Ezen a porton a csak az IPTV multicast jön, semmi másra nem tudom használni. A default gw a másik, az eth0 interface, csak ennek van IP címe. Az eth1-et így lőttem be:

# ifconfig eth1 up multicast

# ip a show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:a0:d1:e3:db:3c brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2a0:d1ff:fee3:db3c/64 scope link 
       valid_lft forever preferred_lft forever

Az rp_filterről tvheadend wiki-ben olvastam, hogy 0-ra kell állítani, ha a default route nem azon az interfészen van, ahol a multicast stream érkezik. Ezért tehát:

# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
# echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

És így működik az amit és ahogy fent írtam. Multicast route-ot egyáltalán nem állítottam, nincs is erre vonatkozóan semmi a route táblában. Természetesen próbáltam úgy is, hogy rp_filtert 1-re állítom és felveszem a következő route-okat:

# ip r a 224.0.0.0/4 dev eth1
# ip r a <mux source mcast ip> dev eth1
# ip r a 239.255.0.0/24 dev eth0 src 10.123.13.25

de így még azt az egyetlen csatornát sem látom a MUX-ból, amit az előbb igen.

A dvblast/ffprobe kimenetet ha kell, privátban elküldhetem.

Igen is meg nem is.

A multicast stream-et elvileg ki tudod nyerni és a ts-ben lévő csatornákat is fogod látni sőt még az EPG is meglesz, de mivel a videó/audió folyam titkosítva van ezért nem fogod tudni azt nézni.

Amennyire én tudom nincs is rá megoldás mert valahogy úgy van megcsinálva a rendszer, hogy a T-s STB-ben van a kulcs. (Asszem az STB-ben lévő CPU sorozatszámát használják, vagy valami ilyesmi. Aki jobban tudja javítson ki.)

Helló, engem csak az érdekelne, hogy honnan lehet ilyen iptv streamet szerezni? ;)