Ето ти още една стабилна алтернатива за уникаст по http - Cesbo Astra . Транскодинга обаче си го правиш отделно...
Ето ти още една стабилна алтернатива за уникаст по http - Cesbo Astra . Транскодинга обаче си го правиш отделно...
Пробвах въпросният софтуер, на RPi което използвам за stream server.
Работи отлично натоварването на процесора е 13%
Ето лога
Ето и конфига:Code:Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] PAT: tsid: 5500 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] PAT: pid: 5551 PMT pnr: 19 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] PAT: crc32: 0xCB06599D Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] SDT: tsid: 5500 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] SDT: sid: 19 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] SDT: Service: BNT HD Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] SDT: Provider: First Digital Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] SDT: crc32: 0x9DA04897 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] PMT: pnr: 19 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] PMT: pid: 5552 PCR Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] VIDEO: pid: 5552 type: 0x1B Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] VIDEO: descriptor: 0x1101FF Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] AUDIO: pid: 5553 type: 0x11 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] AUDIO: descriptor: 0x1C0158 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] AUDIO: descriptor: 0x7C025800 Oct 02 02:09:09: INFO: [BNT HD(First Digital) #1] PMT: crc32: 0x600EAEA7 Oct 02 02:09:10: INFO: [BNT HD(First Digital) #1] Bitrate:3077Kbit/s Oct 02 02:09:10: INFO: [BNT HD(First Digital)] Activate input #1
Минуса му е само един, че трябва да описваш всичките канали на ръка.Code:log.set({ debug = true, stdout = true, syslog = "dvb-t" }) adapter_1 = dvb_tune({ type = "T", modulation = "AUTO", guardinterval = "AUTO", adapter = 1, device = 0, bandwidth = "8mhz", frequency = 634 }) make_channel({ name = "BNT HD(First Digital)", input = { "dvb://adapter_1#pnr=19", }, output = { "http://192.168.1.6:2222/dvb/ch19", } })
Представете си как се описват 200 канала например.
Astra-та е наследника на бившия getstream.a84 и е изключително приятен софтуер. Имаме няколко spts мултикаста в София, които трябва да транспортираме до обект в провинцията. За съжаление нямаме читав пренос на мултикаста и поради тази причина го обръщам в http поток и на локално ниво го рестриймвам отново в мултикаст. Преди ползвах vlc, но той много товари и често се крашваше. От около година съм заменил vlc с astra и от тогава съм забравил за преноса, а дори и при отпадане на потока има опция за резервация на канала от друг източник или файл.
Иначе астра си го ползвам за гледане и запис на телевизия, става и за анализатор на потоците. Бях си играл преди време да ко компилирам за TP-Link 1043 и дори и на рутера се държеше прекрасно.
Има ли вътрешен начин да се автоматизира процеса по създаване на файла с каналите? Тоест аз знам как може да стане, Астрата има api и трябва една програмка която налива сканираният файл в астрата
Трябва да потърся версията за ТП линка, но и да я намеря ще е стара - версия 2 или 3, новите 4.x не съм компилирал. Не знам до къде за транскодирането дали направиха модул, за момента ползвам ffmpeg ако се налага.
Ето примерчета как прихващам екрана на едно Raspberry
с upscale до 1920x1080
Илиffmpeg -strict -2 -re -f x11grab -r 25 -s 1280x748 -i :0.0 -an -s 1920x1080 -f mpegts -vcodec libx264 -crf 18 -vpre ultrafast -threads 2 -pix_fmt yuv420p -metadata title="GH Livecams" -metadata provider_name="GH" udp://239.2.1.1:10000&pkt_size=1316
От там go поема astra 4.0, като единият поток е от RPi, а останалото са мултикастите които получавам и изход с резервацияffmpeg -f x11grab -s 1280x720 -i :0.0 -r 25 -vcodec mpeg2video -b:v 1000 -tune zerolatency -crf 18 -pix_fmt yuv420p -f mpegts udp://239.2.1.1:10000&pkt_size=1316
По-новата версия на кофига трябва да се премахне реда с require. Филмчето с матрицата съм я свалил от сайтаrequire("stream")
make_channel({
name = "Channel 1",
input = {
"udp://239.2.1.1:10000",
},
output = {
"http://:5050",
}
})
make_channel({
name = "Channel 2",
input = {
"udp://239.0.1.2:10000",
"file:///root/matras.ts#loop",
},
output = {
"http://:5051",
}
})
make_channel({
name = "Channel 3",
input = {
"udp://239.0.1.3:10000",
"file:///root/matras.ts#loop",
},
output = {
"http://:5052",
}
})
make_channel({
name = "Channel 4",
input = {
"udp://239.0.1.4:10000",
"file:///root/matras.ts#loop",
},
output = {
"http://:5054",
}
})
Ето и една настройка за 3 източника кабел,сателит и ефир, декодиране и сателитния канал едновременно се стриймва и записва:
#require("stream")
reader_1 = newcamd({
name = "CAM 1",
host = "192.168.1.1", port = 16001,
user = "user", pass = "pass",
key = "0102030405060708091011121314",
disable_emm = false,
})
reader_2 = newcamd({
name = "CAM 2",
host = "192.168.1.1", port = 16002,
user = "user", pass = "pass",
key = "0102030405060708091011121314",
disable_emm = false,
})
adapter_1 = dvb_tune({
type = "T",
adapter = 0,
frequency = "626", bandwidth = "8mhz", hierarchy = "NONE",
})
adapter_2 = dvb_tune({
type = "C",
adapter = 1,
frequency = "754",
symbolrate = "6900",
modulation = "qam64",
})
adapter_3 = dvb_tune({
type = "S2",
adapter = 2,
diseqc = 1,
modulation = "PSK8",
tp = "12647:H:30000",
lnb = "9750:10600:11700"
})
make_channel({
name = "Ch1",
input = {
"dvb://adapter_1#pnr=2",
},
output = {
"http://:8081/tv/1",
}
})
make_channel({
name = "Ch2",
input = {
"dvb://adapter_1#pnr=3",
},
output = {
"http://:8081/tv/2",
}
})
make_channel({
name = "Ch3",
input = {
"dvb://adapter_1#pnr=4",
},
output = {
"http://:8081/tv/3",
}
})
make_channel({
name = "Ch4",
input = {
"dvb://adapter_1#pnr=5",
},
output = {
"http://:8081/tv/4",
}
})
make_channel({
name = "Ch5",
input = {
"dvb://adapter_2#pnr=125&cam=reader_2",
},
output = {
"http://:8082/tv/1",
}
})
make_channel({
name = "Ch10",
input = {
"dvb://adapter_3#pnr=205&cam=reader_1",
},
output = {
"http://:8083/tv/1",
"file:///storage/dvbrec/FHD.ts",
}
})
Конфига от моят пост е за последната 4. Сканираш каналите с w_scan и след това започваш да правиш конф за Астра. Писах по горе че има API но то е за платената версия. Минуса на Астра е че няма как да се извлече epg докато с vdr става супер през plex. Също vdr сам си пресканира честотите когато е idle.
При моите конфигурации съм дам # да не се чете rquire-то.
Спретнах една прясна кроскомпилация за ar71xx рутер / при мен на TP-Link 3600, но трябва да сработи и на 1043/ .
Понеже не можах да го кача тук в ъплоуда го пускам в Докса
http://dox.bg/files/dw?a=9a7ff49d52
Който му се занимава, може да си прекомпилира по следния начин:
в директорията на astra
./configure.sh --cc=/usr/src/OWRT-SDK/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc --arch=mips-openwrt-linux-uclibc-gccФайловете от scripts се пишат в /etc/astra/scripts на рутера. Самия файл астра където ви е кеф. Не съм си играл обаче с ffmpeg модул да добавям при компилацията.make CROSS=/usr/src/OWRT-SDK/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-