From 9a318958f2bf514530aeccd10c63058ac68b9dba Mon Sep 17 00:00:00 2001 From: Maxim Likhachev Date: Sat, 19 Oct 2019 06:40:43 +0500 Subject: [PATCH] ++axaudio --- axaudio | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 axaudio diff --git a/axaudio b/axaudio new file mode 100755 index 0000000..4c21438 --- /dev/null +++ b/axaudio @@ -0,0 +1,77 @@ +#!/bin/bash + +# +# Copyright (C) 2019, Maxim Lihachev, +# +# 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 . +# + +# +# Получение информации и аудиопотока в сети 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] " + 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 +