Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: lame + php - конвертация аудио

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
maragon
Отправлено: 31 Мая, 2015 - 22:24:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Появилось желание конвертировать mp3 в wav на хостинге.
Использую lame.

PHP:
скопировать код в буфер обмена
  1. if(exec("/var/www/maragonov/data/www/test.ru/lame /var/www/maragonov/data/www/test.ru/overdrive.mp3 -f -m m -b 16 --resample 8 /var/www/maragonov/data/www/test.ru/overdrive2.mp3 && /var/www/maragonov/data/www/test.ru/lame --decode /var/www/maragonov/data/www/test.ru/overdrive2.mp3 /var/www/maragonov/data/www/test.ru/overdrive2.wav")){
  2.    echo 1;
  3. } else {
  4.    echo 0;
  5. }


Выводит мне 0 постоянно.
P.S - Функция exec() не отключена в настройках хостинга


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
LIME
Отправлено: 31 Мая, 2015 - 22:27:13
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




А lame чтото выводит вообще?
В system есть переменная статуса выполнения
Попробуй
 
 Top
DeepVarvar Супермодератор
Отправлено: 31 Мая, 2015 - 22:28:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




И зачем ты вообще расконвертиваешь? Будешь что-то микшировать?
 
 Top
maragon
Отправлено: 31 Мая, 2015 - 22:30:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




DeepVarvar пишет:
И зачем ты вообще расконвертиваешь? Будешь что-то микшировать?

График аудио вытащить хочу из wav (wav в png изображение).
Первое на что наткнулся - была библиотека lame.


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
DeepVarvar Супермодератор
Отправлено: 31 Мая, 2015 - 22:32:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (sh):
скопировать код в буфер обмена
  1. #!/bin/sh
  2. find . -name '*.mp3' -exec sh -c 'ffmpeg -i "$0" -ac 1 -ar 4000 -f s16le -acodec pcm_s16le - | gnuplot ./gplt | dd of="$0".png' {} \;

CODE (gplt):
скопировать код в буфер обмена
  1. set terminal png transparent truecolor size 600,60;
  2. set output;
  3.  
  4.   unset key;
  5.   unset tics;
  6.   unset border;
  7.   set lmargin 0;
  8.   set rmargin 0;
  9.   set tmargin 0;
  10.   set bmargin 0;
  11.  
  12.   plot '<cat' binary filetype=bin format='%int16' endian=little array=1:0 with lines;

Прикреплено изображение (Нажмите для увеличения)
Aretha Franklin - Knocking On Heavens Door.mp3.png
 
 Top
dcc0
Отправлено: 01 Июня, 2015 - 00:27:08
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




А обратно преобразовать картинку в звук?! = )


-----
Март 2021. Бросил программирование
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июня, 2015 - 01:18:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Это не сложно.
Читаем её в двумерный массив-матрицу и двигаясь слева направо смотрим (пропорционально) величины положительных и отрицательных полуволн, где базовое значение (тишина) будет равно нулю, а мин и макс это -32768 и 32767 соответственно (для 16 бит знаковых).
Открываем пустой файл и пишем туда 44 байта нулей в начало (для заголовка о котором ниже).
Дальше пишем те значения по очереди полученные из массива.
В нашем примере важно чтобы было в Little Endian.
Когда дописали эти фреймы, смотрим сколько там мы их насчитали.
Мы же их считали, да?
Сикаем файл в начало и пишем в те 44 байта вот такую хрень (см. табличку): http://www[dot]topherlee[dot]com/softwar[dot][dot][dot]t-wavformat[dot]html

Вуаля -- можно запускать с плеера.
 
 Top
dcc0
Отправлено: 01 Июня, 2015 - 08:44:47
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Вуаля -- можно запускать с плеера.
А если не считывать за раз всю картинку, а сделать буферизацию, то получаем экономию пространства ?


-----
Март 2021. Бросил программирование
 
 Top
LIME
Отправлено: 01 Июня, 2015 - 12:18:57
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Получаем
Если у нас заголовок уже есть
А его у нас нет
Учись просто слушать картинки
Оочень разгружает сервак
 
 Top
dcc0
Отправлено: 01 Июня, 2015 - 13:02:33
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




LIME, DeepVarvar, спасибо, нажал в карму.
Я подозревал...

(Отредактировано автором: 01 Июня, 2015 - 13:02:48)



-----
Март 2021. Бросил программирование
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июня, 2015 - 14:29:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




dcc0 пишет:
А если не считывать за раз всю картинку
С картинками не все так радужно. Во первых разные форматы, во вторых сжатие, в третьих следование пикселей не всегда по порядку, может быть черезстрочное, а может и перевернутый порядок. Так что распаковывать полностью и составлять "карту" звуковой волны всеравно придется.
(Добавление)
LIME пишет:
Если у нас заголовок уже есть
У нас его нет, т.к. бывают и сырые RAW-PCM фреймы, собсно их то и отдает ффмпег в том примере на анализ гнуплоту. Вобщем не каждый плеер будет играть RAW-PCM ибо в заголовке указаны данные для воспроизведения: длительность, частота, битность, кол-во каналов.
 
 Top
dcc0
Отправлено: 01 Июня, 2015 - 14:34:36
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




А если делить график по кускам? Пока проигрывается первый кусок преобразуется второй и т.д.


-----
Март 2021. Бросил программирование
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Июня, 2015 - 15:33:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




По каким кускам? Пиксели в картинке не последовательно же могут итти. Их надо распарсить в последовательный вид, а потом еще и вычислить вершины волны в конкретный момент времени.
 
 Top
maragon
Отправлено: 02 Июня, 2015 - 00:40:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Разрабрался! Закатив глазки

(Отредактировано автором: 02 Июня, 2015 - 01:27:48)



-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
dcc0
Отправлено: 02 Июня, 2015 - 12:21:00
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




DeepVarvar, про куски - я не очень понял про
Цитата:
распаковывать полностью

Т.е., например, нельзя взять график - картинку и порезать на несколько частей и как-нибудь распараллеливать процесс ?
Или мы получим значительное искажение в местах обрыва?

(Отредактировано автором: 02 Июня, 2015 - 12:30:43)



-----
Март 2021. Бросил программирование
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB