octonet/octoserve/var/mcsetup/mcsetup.lua

113 lines
2.2 KiB
Lua
Executable File

#!/usr/bin/lua
local socket = require("socket")
local mime = require("mime")
local rtsp = require("rtsp")
local mc = require("mc")
local ip = "10.0.4.53"
local devid = 5
local DoPlay = true
local mclist = false
local configfile = "/config/mcsetup.csv"
local server = false
local a
for _,a in ipairs(arg) do
if a == "server" then server = true end
if a == "noplay" then DoPlay = false end
end
function GetIPAddr()
local myip = nil
local ifconfig = io.popen("ifconfig eth0")
if ifconfig then
local eth0 = ifconfig:read("*a")
ifconfig:close()
myip = string.match(eth0,"inet addr%:(%d+%.%d+%.%d+%.%d+)")
end
return myip
end
function GetDevID()
local devid = nil
local tmp = io.open("/config/device.id")
if tmp then
devid = tonumber(tmp:read())
tmp:close()
end
return devid
end
function WaitSignal()
print("WaitSignal")
while true do
socket.select(nil,nil,1)
end
print("Exit WaitSignal")
end
if server then
socket.select(nil,nil,10)
end
while true do
ip = GetIPAddr()
devid = GetDevID()
print(ip,devid)
if devid and ip then
mclist = mc:ReadSetupFile(configfile)
print(mclist,#mclist)
if #mclist > 0 then
local SessionList = mc:Setup(mclist,ip,devid)
if #SessionList > 0 then
if DoPlay then
mc:Play(SessionList,ip)
end
local rc = mc:KeepAlive(SessionList,ip)
if rc > 0 then
mc:TearDown(SessionList,ip)
end
if rc == 1 then
break
end
if rc == 0 then
socket.select(nil,nil,10)
end
end
else
while not mc.CheckSignal() do
socket.select(nil,nil,1)
end
end
end
collectgarbage()
end
-- local server = socket.tcp()
-- server:settimeout(2)
-- local cseq = 1
-- if server:connect(ip,554) then
-- rtsp:SendRequest(server,ip,"DESCRIBE",nil,cseq)
-- local rc,attributes,sdp = rtsp:ReadResponse(server)
-- cseq = cseq + 1
-- print(rc)
-- for n,a in pairs(attributes) do
-- print(n,a)
-- end
-- if sdp then
-- for i,a in ipairs(sdp) do
-- print(string.format("%2d:%s",i,a))
-- end
-- end
-- server:close()
-- end