Выполнение сценария оболочки, содержащего FFmpeg из сценария PHP - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь запустить сценарий оболочки на PHP через shell_exec ().Сценарий оболочки объединяет два mp3-файла, используя FFmpeg.Я проверил код в моем терминале, и он работает просто отлично.Однако я не могу заставить его работать с php.Это должно выполняться, когда я нажимаю кнопку на веб-странице (я использую WordPress).Когда я пытаюсь это сделать, он попадает на страницу сценария оболочки и проходит через него.Но, похоже, что FFmpeg не работает.

image of webpage

Я звоню:

$new_file = realpath(dirname(__FILE__) . '/../../../scripts'). '/' . $new_file;
$path = realpath(dirname(__FILE__) . '/../../../scripts/combine-mp3.sh');

Я получаю $ ad_file и $main_file из объектов, хранящихся в базе данных.

<code>$output = shell_exec('bash ' . $path . ' ' . $ad_file .  ' ' . $main_file . ' ' . $new_file);
echo "<pre>$output
";

Пример того, как это выглядит:

bash /Users/me/Documents/websites/zzz/wp-content/plugins/myplugin/scripts/combine-mp3.sh http://localhost/zzz/wp-content/uploads/mp3/News_Intro.mp3 http://localhost/zzz/wp-content/uploads/mp3/main_file.mp3new_file_test.mp3

The combine-mp3.sh then gets run:
#this script requires 3 files, input1, input2 and output
echo -e "Input File 1:\t" $1
echo -e "Input File 2:\t" $2
echo -e "Output File:\t" $3

#make sure there are not temporarily files floating around, they use long specific names to avoid accidentally removing important files
rm combine-mp3-temp-file-1.mp3
rm combine-mp3-temp-file-2.mp3

#create intermediate files at 128kbps
ffmpeg -i $1 -f mp3 -ab 128k -ar 44100 -ac 2 combine-mp3-temp-file-1.mp3
ffmpeg -i $2 -f mp3 -ab 128k -ar 44100 -ac 2 combine-mp3-temp-file-2.mp3

#combine the two intermediate files
ffmpeg -i "concat:combine-mp3-temp-file-1.mp3|combine-mp3-temp-file-2.mp3"  -acodec copy $3

#remove temporary files now they are not needed
rm combine-mp3-temp-file-1.mp3
rm combine-mp3-temp-file-2.mp3

Я думаю, что это может быть среда или что-то подобное. Но я понятия не имею, что не так.

1 Ответ

0 голосов
/ 26 февраля 2019

Итак, я нашел решение.Но я не уверен, что это хорошо для долгосрочной перспективе.Я должен был указать местоположение ffmpeg./ usr / locacl / bin / ffmpeg, например.Но я нервничаю по поводу использования этого в будущем.Есть ли вероятность, что он будет храниться где-то еще?

...