Добрый день.
Все, кто связаны с IPTV наверняка слышали о таких программах как Astra (getstream), tsplay, VLC, созданных для вещания в сеть с различных источников. Они являются альтернативными решениями таких аппаратных платформ как Harmonic, PBI и других.
Давайте посмотрим, как себя проявляет Astra.
А судить будет мой любимый Bridgetech VB220.
Из файла в Multicast
tsplay
Быстрее и проще всего запустить некий ролик с помощью tsplay, это делается одной простой командой:
tsplay filename.ts 239.255.10.156:1234 -loop
Программа вовсе не ест ресурсов системы и показывает хорошие данные на анализаторе:
На графике показано, что jitter-стабильный, потери TS-пакетов отсутствуют (не считая момент, когда заканчивается ролик и запускается заново).
VLC
Запустить из консоли вещание через VLC чуть тяжелее, чем с помощью tsplay, но до сих пор укладываемся в одну строку:
сvlc -v /content/filename.ts --sout '#standard{access=udp{ttl=15},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=[239.255.10.156:1234]}' --loop
На моей машине процесс ест 1-3% процессора (как будто еще и декодирует) и показывает такие данные на анализаторе:
Как мы видим из графика, jitter-скачет, но в пределах нормы, потери TS-пакетов отсутствует как и у tsplay, но более длительный перерыв между концом и началом ролика.
Astra
Для запуска Astra придется создать небольшой конфигурационный файл на lua:
#!/usr/bin/astra
require("base")
make_stream({
name = "Stream 1",
file = {
filename = "/content/filename.ts",
}
}, {
{
name = "Movie",
analyze = false,
output = {
"udp://239.255.10.156:1234",
}
},
})
А затем запустить:
astra movie.lua
Или сразу:
./movie.lua
Нагрузку на систему я не замечаю, смотрю на анализатор:
Практически идеальный jitter, однако появляются потери TS-пакетов даже посреди ролика.
Вывод
Со стороны абонента разницы между VLC, tsplay, Astra не заметно.
На анализаторе приятнее смотреть на tsplay.
Нравятся lua-конфиги Astra.
Удобно автоматизировать на bash'e tsplay.
VLC из коробки поддерживает плейлисты и random-вещание из списка, что можно сделать на bash с помощью tsplay или на lua для Astra.
Мой выбор для вещания из файлов: tsplay.
Из unicast/multicast (MPTS) в Multicast (SPTS)
Со спутникового приемника Harmonic ProView 29xx отправляем MPTS-поток по IP на Harmonic ProStream 1000 и сервер с Astra.
Задача: получить две мультикаст-группы с SPTS-потоками.
Harmonic ProStream 1000
Конфигурация стримера осуществляется через веб-админку, которая не может похвастаться интуитивным и быстрым интерфейсом, но вполне пригодная. Этот момент опустим, я сторонник скриптов и конфиг-файлов.
В результате мы получаем два идеальный TS-потока, что неудивительно для оборудования с высоким ценником:
Astra
Как я сказал выше, мне нравятся конфиги Астры. Все выглядит красиво и понятно:
#!/usr/bin/astra
require("base")
make_stream({
name = "ProView IRD",
demux = true,
udp = {
addr = "10.10.10.10", port = 2008
}
}, {
{
name = "Hustler TV",
analyze = false,
pnr = 9,
output = {
"udp://233.120.65.222:1234",
}
},
{
name = "Blue Hustler",
analyze = false,
pnr = 10,
output = {
"udp://233.120.65.223:1234",
}
},
})
Астра тоже радует нас хорошими графиками на анализаторе:
Да, результаты не идеальные, но зафиксировано всего 3 небольших сбоя за 90 минут, что в реальный клиент никогда не заметит.
Вывод
Astra имеет все, что необходимо для работы как IP-стример (резервирование, фильтрация, изменение PID дорожек).
Если у вас нет профессионального сертифицированного оборудования, средств или произошел выход из строя основного стримера, то Astra будет спасением для вас.
VLC не рассматривается в данном тесте из-за сложности настройки, низкого качества генерируемых потоков и высокого потребления CPU.
Multicast (SPTS) в Multicast (SPTS)
Astra и Harmonic ProStream показывают отменные потоки.
К сожалению, Astra не умеет генерировать потоки c постоянным битрейтом (CBR), что бывает полезно в некоторых случаях.
DVB-S/S2 в Multicast
Мне очень интересно сравнить работы Astra с такими приемниками-комбайнам как Harmonic ProView 7000 или PBI DHC-4000P, но, к сожалению, у меня нет DVB-S2 PCI-E платы.
О HTTP
Наш анализатор не поддерживает HTTP-протокол, поэтому проанализировать работу Astra или VLC в этом направлении не получится. По ощущением они оба отлично справляются с этой задачей. Только кому нужно вещать в HTTP? Было бы здорово иметь возможность резервировать DVB/UDP источники HTTP-потоками из интернета, но это пока с этой задачей ни один софт(и железо) не позволяет справится без костылей. Поправьте меня, если я не прав.
Общий вывод
Astra — интересная альтернатива дорогому оборудованию, буду обязательно следить за развитием, но пока мы не готовы рискнуть доверить ей генерацию всех потоков, оставим на для тестов и на случай выхода из строя резервного стримера.
Расскажите о своем опыте с Astra и другими софт-решениями для DVB/IPTV.
Автор: klu4ik