Страница 1 из 1

Конвертация записей wav в mp3

Добавлено: 07 апр 2020, 18:49
inxaile
Добрый день.

Помогите пожалуйста решить проблему.

FreePBX 13. Используется скрипт для конвертации записей разговора из WAV в MP3. Скрипт отрабатывает, файлы конвертируются.
Проблема появляется, если попытаться прослушать запись через CDR Report.
Выдает ошибку:

Код: Выделить всё

RuntimeException
/usr/bin/sox formats: can't open input file `/var/spool/asterisk/monitor/2020/04/07/out-89056510021-3316-20200407-182949-1586273387.58.wav': Unhandled WAV file encoding (MP3). Try overriding the encoding: e.g. for an MP3 WAV, `-t mp3'
File:/var/www/html/admin/libraries/media/Media/Driver/Drivers/SoxShell.php:194
В чем может быть проблема?

Скрипт конвертации:

Код: Выделить всё

#!/bin/bash
#
# For Elastix 2.5 (FreePBX 2.11)
# Filename: /etc/asterisk/scripts/mixmon-mp3-2.sh
# Author: Andrey Sorokin (aka shadow_alone) andrey@sorokin.org
# Article in Russian - http://andrey.org/mp3-elastix-2-5-frepbx-2-11/
# -----------------------------------
# To enable:
# rpm -Uhv http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
# yum --disablerepo=commercial-addons install ffmpeg lame
# Settings->Advanced Settings
# Display Readonly Settings - true
# Override Readonly Settings - true
# Post Call Recording Script - /etc/asterisk/scripts/mixmon-mp3-2.sh ^{YEAR} ^{MONTH} ^{DAY} ^{CALLFILENAME} ^{MIXMON_FORMAT} ^{MIXMON_DIR}
# Override Call Recording Location - /var/spool/asterisk/monitor/
# ------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

YEAR=$1
MONTH=$2
DAY=$3
CALLFILENAME=$4
MIXMON_FORMAT=$5
MIXMON_DIR=$6


if [ -z "${MIXMON_DIR}" ]; then
SPOOLDIR="/var/spool/asterisk/monitor/"
else
SPOOLDIR=${MIXMON_DIR}
fi

FFILENAME=${SPOOLDIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT}

test ! -e ${FFILENAME} && exit 21

WAVFILE=${FFILENAME}
MP3FILE=`echo ${WAVFILE} | sed 's/.wav/.mp3/g'`

LOWNICE="nice -n 19 ionice -c3"

${LOWNICE} lame --quiet --preset phone ${WAVFILE} ${MP3FILE}

test -e ${MP3FILE} && rm -f ${WAVFILE}

${LOWNICE} ffmpeg -loglevel quiet -y -i ${MP3FILE} -f wav -acodec copy ${WAVFILE} >/dev/null 2>&1

test -e ${WAVFILE} && rm -f ${MP3FILE}

Re: Конвертация записей wav в mp3

Добавлено: 08 апр 2020, 00:08
ded
Проблема в непонимании технического английского.

Если попытаться прослушать запись через CDR Report, то система отвечает на чистом английском языке
can't open input file `/var/spool/asterisk/monitor/2020/04/07/out-89056510021-3316-20200407-182949-1586273387.58.wav': Unhandled WAV file encoding (MP3).
НЕ могу, говорит, открыть файл /var/spool/asterisk/monitor/2020/04/07/out-89056510021-3316-20200407-182949-1586273387.58.wav
Неподдерживаемый формат WAV файла - (MP3)
Try overriding the encoding: e.g. for an MP3 WAV, `-t mp3'
File:/var/www/html/admin/libraries/media/Media/Driver/Drivers/SoxShell.php:194
Попытайтесь, говорит, переписать кодирование в формат MP3 добавив опцию `-t mp3' в файле
File:/var/www/html/admin/libraries/media/Media/Driver/Drivers/SoxShell.php - см. что там на 194 строке.
Как пишет коллега zzuz -
Переводы с английского. Дорого. ©

Re: Конвертация записей wav в mp3

Добавлено: 08 апр 2020, 12:13
inxaile
Проблема решена. Тему можно удалить

Re: Конвертация записей wav в mp3

Добавлено: 08 апр 2020, 13:00
ded
Нет уж, не надо удалять, пусть чужая глупость тоже хранится тут, мы её запишем золотыми иглами в уголках глаз, в назидание молодым поколениям.

Re: Конвертация записей wav в mp3

Добавлено: 08 апр 2020, 13:33
zzuz
Блин , всё веселье проворонил)

Re: Конвертация записей wav в mp3

Добавлено: 08 апр 2020, 15:54
inxaile
Может кому пригодиться скрипт.

Убрал кодирование mp3 в wav, добавил правку в db таблицы cdr, чтобы mp3 файлы можно было в вебморде CDR Report прослушивать / скачивать.

Ошибка была связана с тем, что проигрывание mp3 в обертке wav SoX'ом не предусмотрена.

Код: Выделить всё

#!/bin/bash
# Filename: /etc/asterisk/scripts/mixmon-mp3-2.sh
# Author: Andrey Sorokin (aka shadow_alone) andrey@sorokin.org
# Article in Russian - http://andrey.org/mp3-elastix-2-5-frepbx-2-11/
# -----------------------------------
# To enable:
# rpm -Uhv http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
# yum --disablerepo=commercial-addons install ffmpeg lame
# Settings->Advanced Settings
# Display Readonly Settings - true
# Override Readonly Settings - true
# Post Call Recording Script - /etc/asterisk/scripts/mixmon-mp3-2.sh ^{YEAR} ^{MONTH} ^{DAY} ^{CALLFILENAME} ^{MIXMON_FORMAT} ^{MIXMON_DIR}
# Override Call Recording Location - /var/spool/asterisk/monitor/
# ------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

YEAR=$1
MONTH=$2
DAY=$3
CALLFILENAME=$4
MIXMON_FORMAT=$5
MIXMON_DIR=$6

DBUSER=freepbxuser
PWD="$(grep "AMPDBPASS" /etc/freepbx.conf | awk '{printf $3}' | sed -e "s/['|;]//g")"

if [ -z "${MIXMON_DIR}" ]; then
SPOOLDIR="/var/spool/asterisk/monitor/"
else
SPOOLDIR=${MIXMON_DIR}
fi

FFILENAME=${SPOOLDIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT}

test ! -e ${FFILENAME} && exit 21

WAVFILE=${FFILENAME}
MP3FILE=`echo ${WAVFILE} | sed 's/.wav/.mp3/g'`

LOWNICE="nice -n 19 ionice -c3"

${LOWNICE} lame --quiet --preset phone ${WAVFILE} ${MP3FILE}

test -e ${MP3FILE} && rm -f ${WAVFILE}

#${LOWNICE} ffmpeg -loglevel quiet -y -i ${MP3FILE} -f wav -acodec copy ${WAVFILE} >/dev/null 2>&1

#test -e ${WAVFILE} && rm -f ${MP3FILE}

mysql -u$DBUSER -p$PWD --database=asteriskcdrdb --execute='UPDATE cdr SET recordingfile="'$CALLFILENAME'.mp3" WHERE recordingfile="'$CALLFILENAME'.wav";';

find ${MP3FILE} -type f -size -2k -exec rm {} \;

Re: Конвертация записей wav в mp3

Добавлено: 08 апр 2020, 20:41
zzuz
Почувствуйте разницу.

Код: Выделить всё

PWD="$(grep "AMPDBPASS" /etc/freepbx.conf | awk '{printf $3}' | sed -e "s/['|;]//g")"  
-->>

Код: Выделить всё

DBUSER=`awk '/AMPDBUSER/ {gsub("[=;\"\x27]"," ",$0);print $NF}' /etc/freepbx.conf`
PWD=`awk '/AMPDBPASS/ {gsub("[=;\"\x27]"," ",$0);print $NF}' /etc/freepbx.conf`

Код: Выделить всё

MP3FILE=`echo ${WAVFILE} | sed 's/.wav/.mp3/g' -->>
-->>

Код: Выделить всё

MP3FILE=${WAVFILE/.wav/.mp3}