1 changed files with 77 additions and 0 deletions
@ -0,0 +1,77 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
# |
||||||
|
# Copyright (C) 2019, Maxim Lihachev, <envrm@yandex.ru> |
||||||
|
# |
||||||
|
# This program is free software: you can redistribute it and/or modify it |
||||||
|
# under the terms of the GNU General Public License as published by the Free |
||||||
|
# Software Foundation, version 3. |
||||||
|
# |
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT |
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
||||||
|
# more details. |
||||||
|
# |
||||||
|
# You should have received a copy of the GNU General Public License along with |
||||||
|
# this program. If not, see <https://www.gnu.org/licenses/>. |
||||||
|
# |
||||||
|
|
||||||
|
# |
||||||
|
# Получение информации и аудиопотока в сети Axia Livewire |
||||||
|
# |
||||||
|
# Пример обработки полученных данных при помощи ffmpeg: |
||||||
|
# |
||||||
|
# | ffmpeg -ac 2 -ar 48000 -f s24be -i pipe:0 |
||||||
|
# |
||||||
|
|
||||||
|
# Сценарий принимает адрес Axia Livewire в формате IP/Channel, |
||||||
|
# при этом IP-адрес может отсутствовать |
||||||
|
if [ $# -ne 2 ]; then |
||||||
|
echo "USAGE: $0 [--info|--dump] <IP/Channel>" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
# Перевод чисел в 16-ричную систему счисления |
||||||
|
hex() { |
||||||
|
printf '%02X' "$@" |
||||||
|
} |
||||||
|
|
||||||
|
# Программа |
||||||
|
PROGRAMME="$2" |
||||||
|
|
||||||
|
# IP-адрес Axia Livewire. |
||||||
|
IP="$(echo $PROGRAMME | grep -o '.*\/' | tr '/' ' ')" |
||||||
|
|
||||||
|
# По умолчанию используется базовый адрес 239.192.0.0 |
||||||
|
ADDRESS="${IP:-239.192.0.0}" |
||||||
|
|
||||||
|
# Канал |
||||||
|
CHANNEL="${PROGRAMME/*\/}" |
||||||
|
|
||||||
|
# Команда получения сигнала в сети Axia Livewire |
||||||
|
CMD="rtpdump -F payload" |
||||||
|
|
||||||
|
BROADCAST="0x$(hex $[0x$(hex ${ADDRESS//./ })+$CHANNEL])/5004" |
||||||
|
HEXADDR="$(hex $[0x$(hex ${ADDRESS//./ })+$CHANNEL])" |
||||||
|
|
||||||
|
IPADDR=$(printf "%d." $( |
||||||
|
echo $HEXADDR | sed 's/../0x& /g' | tr ' ' '\n' |
||||||
|
) | sed 's/\.$/\n/') |
||||||
|
|
||||||
|
################# |
||||||
|
|
||||||
|
if [ "$1" == "--info" ]; then |
||||||
|
# Информация об источнике |
||||||
|
echo "Axia Livewire :: IP: $IPADDR, SOURCE: $CHANNEL, BROADCAST: $BROADCAST" |
||||||
|
else |
||||||
|
# Прекращение работы, если нет последующего конвеера, |
||||||
|
# т.к. выводить дамп аудиопотока в stdout не имеет смысла. |
||||||
|
if [ -t 1 ]; then |
||||||
|
echo "A pipe (f.e. to ffmpeg) isn't exists. Terminated." |
||||||
|
exit 1 |
||||||
|
else |
||||||
|
# Дамп |
||||||
|
$CMD $BROADCAST |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
Loading…
Reference in new issue