#!/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