Во-первых, ffmpeg
предпочтительный инструмент для этого. Это интенсивно ЦП, потому что это - природа кодирования видео или аудио.
Можно просто разорвать поток (предполагающий, что исходное mp3 аудио находится в потоке) от дорожки, и сохраните его. Я использовал это bash
отрывок прежде для каталогов *.flv
файлы:
#!/bin/bash
for i in *.flv;
do ffmpeg -i "$i" -acodec copy `basename $i .flv`-`date +%H%M%S%N`.mp3;
done
Если поток не находится исходно в mp3 формате, необходимо повторно закодировать. Или возможно Вы хотите другую скорость передачи и т.д. Эта задача определенно использует больше ЦП, чем первый:
ffmpeg -i "$file" -f mp3 -vn -acodec libmp3lame -ab 192 `basename $file .flv`-`date +%H%M%S%N`.mp3;
править: ограничить одним ядром: taskset 1 ffmpeg <rest of args>
-- taskset
часть util-linux
пакет в системах Debian. Можно также хотеть renice
процесс, устанавливая его приоритетное значение к чему-то в положительном диапазоне (звучит назад, но ниже nice
оцените = больше процессорного времени). Как всегда, man taskset
, man renice
, man nice
.
Это - то, как Вы делаете то, что Вы хотите сделать с ffmpeg от оболочки - реализующий в PHP, оставлен как осуществление для читателя.