как конвертировать mp3 в ogg по php?

Я использую windows 7 и xampp в localhost.Я хочу конвертировать mp3-аудио в ogg audio с помощью php-скрипта.Я загрузил ' ffmpegConverter_v0.2 ' zip-файл, где структура папок:

ffmpegConverter_v0.2
  --consoleConversor
      --consoleConversor
      --consoleConversor.exe
      --ffmpeg.dll

  --consoleMonitor
      --consoleMonitor
      --consoleMonitor.exe
      --ffmpeg.dll
      --Queue.xml

  --serviceConversor
      --ffmpeg.dll
      --serviceConversor
      --serviceConversor.exe

  --serviceMonitor
      --ffmpeg.dll
      --Queue.xml
      --serviceMonitor
      --serviceMonitor.exe

  --LEEME.txt
  --README.txt

Я сохраняю ' ffmpegConverter_v0.2 ' папка, mp.php и ' a.mp3' в той же папке и использовал следующий код в mp.на PHP:

<?php    
exec("ffmpegConverter_v0.2serviceConversorserviceConversor.exe -i a.mp3 -acodec libvorbis ap.ogg");
?>

затем появилось следующее сообщение об ошибке : enter image description here

что я сделал не так ? каков точный способ установки ffmpeg ? что точный способ написать команду в PHP-скрипте для этого и как это можно использовать в онлайн-сервере ? есть ли другой лучший конвертер ?

-спасибо.

EDIT:

когда я использовал следующую строку

<?php
 exec("ffmpegConverter_v0.2consoleConversorconsoleConversor.exe -i a.mp3 -acodec libvorbis ap.ogg");
?>

затем я получил это сообщение enter image description here

Я также попытался это :

<?php   
exec("c:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe serviceConversor.exe"); 
exec("ffmpegConverter_v0.2serviceConversorserviceConversor.exe -i a.mp3 -vcodec libtheora -acodec libvorbis ap.ogg");
?>

затем получил то же сообщение, что и первое изображение.

5 ответов


забудьте об этом serviceConversor вещь.

получить сборка FFmpeg для Windows (статическая сборка, соответствующая вашей архитектуре, должна быть хорошим началом, чтобы избежать других DLL / etc. проблемы.)

затем использовать exec:

<?php
    $retCode = exec('C:\path\to\ffmpeg.exe -y -i file.mp3 -acodec libvorbis file.ogg');
?>

не забудьте избежать обратных косых черт (\); вы этого не сделали в своем вопросе.

exec вернет код возврата FFmpeg (я положил его в $retCode здесь), что равно 0 для a успех.

как некоторые отметили, Вы можете добавить -aq опция для установки качества вывода OGG для перекодирования VBR.

libvorbis построен в статической версии FFmpeg; я только что проверил с помощью ffmpeg.exe -codecs:

DEA.L. vorbis               Vorbis (decoders: vorbis libvorbis )

где DE означает декодирование и кодирование поддерживаются для этого кодека.


один из них должен работать:

ffmpeg -y -i a.mp3 -acodec libvorbis -aq 50 output.ogg
ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg

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

код:

passthru("/usr/local/bin/ffmpeg -i 1.mp4 -vcodec libtheora -acodec libvorbistestjohn4545454.ogg 1> /path/to/logfile.txt 2>&1 &");

лучший совет, который я могу дать вам:

если есть файл README, и что-то не работает. Читай!

это, как говорится, вы пытаетесь выполнить команду против serviceConversor.exe. Это не будет работать, так как это служба windows, и она должна быть установлена в первую очередь. Существует также другой файл под названием consoleConverser.exe и, как говорится в файле README, " может быть выполнен без предыдущей установки.'.

Я предполагаю, что у вас уже есть ffmpeg установлен, как того требует

таким образом, ваш первый вариант - попытаться выполнить правильную команду. Имейте в виду, что я не знаком с этим собеседником, поэтому я понятия не имею, правильная ли это команда. Я здесь, чтобы помочь с сообщением об ошибке.

<?php    
exec("ffmpegConverter_v0.2\consoleConversor\consoleConversor.exe -i a.mp3 -acodec libvorbis ap.ogg");
?>

теперь, если это не удастся, вы все равно можете попробовать вторую часть readme. Который должен установить службу windows. Это должно быть сделано вручную, что объяснил в ms база знаний.

к сожалению, serviceConversor был протестирован только с Windows XP и я не могу установить его на моей системе Windows 7, но, возможно, Вам повезет больше.

теперь это говорит, что вы можете напрямую позвонить installutil serviceConversor.exe когда вы находитесь в ffmpegConverter_v0.2\serviceConversor\ папку с помощью cmd, но скорее всего, вы получите сообщение о том, что installutil не может быть найден. В этом случае вы можете запустить его с полным путем, который обычно является одним из них, в зависимости от вашей версии .NET и если вы используете window 7 32 или 64.

c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe
c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
c:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe

поэтому в моем случае полная команда будет (из папки serviceConversor)

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe serviceConversor.exe

MP3 - >OGG

ffmpeg -i input.mp3 -ab 6400 output.ogg

OGGDEC.ИСПОЛНЯЕМЫЙ ОГГ->МР3

OGGDEC.EXE myfile.ogg --stdout | LAME.EXE -V5 --vbr-new - myfile.mp3