Некоторые телеканалы вещаются только в ночное время, но смотреть их хочется круглосуточно. Проблему можно решить следующим конфигом для Astra 4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env astra-4.0
 
require("stream")
 
pidfile("/var/run/astra.pid")
 
current_channel = nil
current_state = 0
 
function write_channel()
    if current_channel then
        kill_channel(current_channel)
    end
 
    os.remove("/home/recorder/file.ts");
 
    current_state = 1
    current_channel = make_channel({
        name = "Write",
        input = { "udp://239.100.100.1:1234" },
        output = { "udp://239.200.200.1:1234/", "file:///home/recorder/file.ts" },
    })
end
 
function read_channel()
    if current_channel then
        kill_channel(current_channel)
    end
 
    current_state = 2
    current_channel = make_channel({
        name = "Read",
        input = { "file:///home/recorder/file.ts#loop" },
        output = { "udp://239.200.200.1:1234/" },
    })
end
 
function check_time()
 
  current_time = tonumber(os.date("%H%M"))
 
	if current_state == 1 then
 
        	if current_time == 1030 then
			       read_channel()
	        end
 
	elseif current_state == 2 then
 
   	if current_time == 430 then
	    write_channel()
	  end
 
 
	end
end
 
function main()
 
	current_time = tonumber(os.date("%H%M"))
	read_channel();
 
    timer({
        interval = 60,
        callback = check_time
    })
end
 
main(),

В функциях write_channel() и read_channel() необходимо указать свои параметры входящих и исходящих потоков. В функции check_time() задаются временные рамки, в данном конфиге запись начинается в 4:30 и заканчивается в 10:30.

Конфиг не идеален, есть несколько моментов которые хочется улучшить. Во-первых, в текущей реализации нет возобновления записи в случае перезапуска процесса — запись стартует строго в указанное время, если запустить Астру позже — начнется воспроизведение. Во-вторых, нет сохранения позиции воспроизводимого файла — при перезапуске вещание файла начнется с самого начала. Астра умеет сохранять позицию и возобновлять вещание с сохранённой точки, но при тестировании оно мне чем-то не понравилось и не стал использовать эту функцию. В-третьих, хочется начинать и заканчивать запись не по времени, а по битрейту канала.

Астра: запись и карусельное воспроизведение по рассписанию
Метки:    

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *