Advertisement
Guest User

Untitled

a guest
Feb 24th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1. #!/usr/bin/env /usr/local/bin/astra_5
  2.  
  3. logfile = "/var/log/astra_5.log"
  4. os.remove(logfile)
  5. log.set({ filename = logfile })
  6. pidfile("/var/run/astra_5.pid")
  7.  
  8. ntv3 = newcamd({ name = 'ntv3', host = '127.0.0.1', port = 50003, user = 'user1', pass = 'pass1', key = '0102030405060708091011121314', cas_data = '040600'})
  9. ntv4 = newcamd({ name = 'ntv4', host = '127.0.0.1', port = 50004, user = 'user1', pass = 'pass1', key = '0102030405060708091011121314', cas_data = '040600'})
  10.  
  11. channels = {
  12. { name = "Bober", input = {"dvb://ntv_11862_5#pnr=1501&cam=ntv3"}, output = {"udp://192.168.2.25@239.0.100.60#sync"}},
  13. { name = "Dom zhivotnye", input = {"dvb://ntv_11862_5#pnr=1502&cam=ntv3"}, output = {"udp://192.168.2.25@239.0.100.62#sync"}},
  14. { name = "Extreme sports", input = {"dvb://ntv_11862_5#pnr=1507&cam=ntv4"}, output = {"udp://192.168.2.25@239.0.100.63#sync"}},
  15. { name = "Nat Geo Wild", input = {"dvb://ntv_11862_5#pnr=1510&cam=ntv3"}, output = {"udp://192.168.2.25@239.0.100.64#sync"}},
  16. { name = "Psihologia 21", input = {"dvb://ntv_11862_5#pnr=1504&cam=ntv3"}, output = {"udp://192.168.2.25@239.0.100.65#sync"}},
  17.  
  18. }
  19.  
  20. -- declare
  21. _an = {}
  22. local hostname = utils.hostname()
  23. local content = ""
  24. local _t = 10 -- timer start signal
  25.  
  26.  
  27. function send_monitor(content)
  28. http_request({
  29. host = "127.0.0.1",
  30. path = "/?mod=tvstat",
  31. method = "POST",
  32. content = content,
  33. port = 80,
  34. headers = {
  35. "User-Agent: Astra v." .. astra.version,
  36. "Host: " .. hostname,
  37. "Content-Type: application/x-www-form-urlencoded",
  38. "Content-Length: " .. #content,
  39. "Connection: close",
  40. },
  41. callback = function(s,r)
  42. --dump_table(r)
  43. end
  44. })
  45. end
  46.  
  47.  
  48. -- settings tuner
  49. local tune_conf = { name = "ntv_11862_5", adapter = 5, type = "S2", frequency = 11862, lnb_sharing = false, polarization = "R", symbolrate = 27500, lof1 = 10750, lof2 = 10750, slof = 10750, modulation = "PSK8",
  50. callback = function(data)
  51. --dump_table(data)
  52. _t = _t + 1
  53. if(_t == 15)then
  54. bitrate = "calc"
  55. snr = data.signal * 100 / 65535
  56. if(snr>100)then
  57. snr = 99
  58. end
  59. if(data.status == 31)then
  60. lock = 1
  61. else
  62. lock = 0
  63. end
  64. content = "type=dvb&stream=ntv_11862_5&adapter=5&server=" .. hostname .. "&lock=" .. lock .. "&bitrate=" .. bitrate .. "&snr=" .. snr .. "&ber=" .. data.ber .. "&unc=" .. data.unc
  65. send_monitor(content)
  66. --log.info(content)
  67. _t = 0
  68. end
  69. end
  70. }
  71.  
  72. ntv_11862_5 = dvb_input(tune_conf)
  73.  
  74. for q,item in pairs(channels)do
  75. local output = item.output[1]
  76. make_channel(item)
  77. _an[q] = {i = {}, a = {}, t = 20}
  78. _an[q].i = udp_input(parse_url(item.output[1]))
  79. _an[q].a = analyze({
  80. upstream = _an[q].i:stream(),
  81. name = "_" .. item.name,
  82. callback = function(data)
  83. --dump_table(data)
  84. if(data.total and ((_an[q].t==30) or (data.total.cc_errors > 5 or data.total.pes_errors > 5
  85. or data.total.scrambled or data.on_air==false or data.total.bitrate<50)))then
  86. local scram = 0
  87. local onair = 0
  88. if(data.total.scrambled==true) then
  89. scram = 1
  90. end
  91. if(data.on_air==true) then
  92. onair = 1
  93. end
  94. content = "type=channel&server=" .. hostname .. "&adapter=" .. tune_conf.adapter .. "&channel=" .. item.name .. "&output=" .. output .. "&stream=" .. tune_conf.name .. "&scrambled=" .. scram .. "&bitrate=" .. data.total.bitrate .. "&cc_error=" .. data.total.cc_errors .. "&pes_error=" .. data.total.pes_errors .. "&ready=" .. onair
  95. send_monitor(content)
  96. _an[q].t = 0
  97. end
  98. _an[q].t = _an[q].t + 1
  99. end
  100. })
  101. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement