2013-06-02 15 views
7

Sto utilizzando Windows 7 e XAMPP in localhost.I vogliono convertire l'audio mp3 in audio ogg da script.I php file zip scaricato 'ffmpegConverter_v0.2', dove la struttura delle cartelle è:come si può convertire mp3 in ogg con php?

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 

Continuo il '' ffmpegConverter_v0.2 cartella, mp.php e 'a.mp3' nella stessa cartella e utilizzate il seguente codice nel mp.php:

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

poi ottenuto il seguente messaggio di errore: enter image description here

wh ho sbagliato? qual'è il modo esatto per installare ffmpeg? qual è il modo esatto di scrivere il comando in php script per quello e come può essere usato nel server online? c'è qualche altro convertitore migliore?

-Grazie.

EDIT:

quando ho usato la seguente riga

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

poi ho avuto questo messaggio enter image description here

Ho provato anche questo:

<?php 
exec("c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe serviceConversor.exe"); 
exec("ffmpegConverter_v0.2\serviceConversor\serviceConversor.exe -i a.mp3 -vcodec libtheora -acodec libvorbis ap.ogg"); 
?> 

quindi ha ricevuto lo stesso messaggio come la prima immagine.

+1

Questo non ha assolutamente a che fare con php. Vai a leggere i documenti FFMPEG ... Suggerimento: forse la parola "servizio" nel nome del file .exe dovrebbe essere un indizio sul motivo per cui stai ricevendo quell'errore. –

+0

quindi il mio codice php è ok? e ho scaricato il file zip giusto? – user1844626

risposta

3

Dimenticate che serviceConversor cosa.

Ottenere uno FFmpeg build for Windows (una build statica che corrisponde alla propria architettura dovrebbe essere un buon inizio per evitare altri problemi DLL/etc.).

Quindi utilizzare exec:

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

Non dimenticate di sfuggire alle backslash (\\); non hai nella tua domanda.

exec restituirà il codice di ritorno di FFmpeg (l'ho messo in $retCode qui), che è 0 per un successo.

Come alcuni hanno notato, è possibile aggiungere l'opzione -aq per impostare la qualità di uscita OGG per una transcodifica VBR.

libvorbis è costruito nella versione statica di FFmpeg; Ho appena controllato utilizzando ffmpeg.exe -codecs:

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

dove DE mezzi di decodifica e codifica sono supportati per questo codec.

+0

fammi provare. Sto scaricando" build statiche a 32 bit "da quel collegamento – user1844626

+0

Se stai effettivamente eseguendo un 64-bit Windows, suggerisco caldamente la versione a 64 bit come dovrebbe essere più pe importante in questo caso. – eepp

+0

che ha funzionato. Grazie mille per il vostro aiuto. :) – user1844626

2

Uno di questi dovrebbe funzionare:

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

Ho provato entrambe le righe // exec ("ffmpeg \ serviceConversor \ serviceConversor.exe -y -i a.mp3 -acodec libvorbis -aq 50 output.ogg"); exec ("ffmpeg \ serviceConversor \ serviceConversor -i a.mp3 -vcodec libtheora -acodec libvorbis testjohn4545454.ogg"); (ha cambiato il nome della cartella da "ffmpegConverter_v0.2" a "ffmpeg") ma ha ottenuto lo stesso messaggio di errore. ho scritto il codice correttamente? – user1844626

1

Il miglior consiglio che posso darvi:

Se c'è un file README, e qualcosa non funziona. Leggilo!

Detto questo, si sta tentando di eseguire un comando contro serviceConversor.exe. Non funzionerà in quanto si tratta di un servizio Windows e deve essere installato prima. C'è anche un altro file chiamato consoleConverser.exe e, come dice il file README, 'Può essere eseguito senza un'installazione precedente.'.

sto supponendo che si dispone già di ffmpeg installato come ciò che è richiesto

Quindi la vostra prima opzione sarebbe di provare ed eseguire il comando destra come. Tieni presente che non conosco questo conversatore, quindi non ho idea se questo è il comando giusto. Sono qui per aiutare con il messaggio di errore.

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

Ora se questo non funziona, è comunque possibile provare la seconda parte del file. Quale è installare il servizio di Windows. Questo deve essere fatto manualmente, che è spiegato in the ms knowledgebase.

Sfortunatamente il ServiceConversor è stato testato solo con Windows XP e non posso installarlo sul mio sistema Windows 7, ma forse hai più fortuna.

Ora, questo dice che si può chiamare direttamente installutil serviceConversor.exe quando si è nella cartella ffmpegConverter_v0.2\serviceConversor\ utilizzando cmd, ma è probabile che si otterrà un messaggio che dice che installutil non è stato trovato. In questo caso è possibile eseguire con il percorso completo, che normalmente è uno di questi, a seconda della versione di .NET e se siete alla finestra 7 a 32 o 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 

Così in esecuzione nel mio caso, la piena comando sarà (dalla cartella serviceConversor)

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

I tuoi errori non hanno nulla a che fare con php.Stop che lo usa fino a quando il convertitore non funziona. Usa winkey + R e digita 'cmd' e premi entrer. Digita i tuoi comandi lì per ottenere l'output. Inoltre hai installato ffmpeg? –

+0

quale comando dovrei digitare nella finestra di comando? Ho provato "c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ InstallUtil.exe serviceConversor.exe ".è ok? (Ho tenuto la cartella 'ffmpegConverter_v0.2' nella cartella 'mp3' dove mp.php è conservato in htdocs) – user1844626

+0

La finestra di comando è fondamentalmente il come la funzione 'exec' .Si ottiene solo l'output diretto.Quindi puoi usarlo per provare quale comando sul convertitore ffmpeg funziona.Non l'ho mai usato, quindi non posso aiutarti lì –

1

MP3-> OGG

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

OGGDEC.EXE OGG-> MP3

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

eseguirlo nel proprio processo e in background, altrimenti lo script PHP si bloccherà mentre attende il completamento della conversione.

Il codice:

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

Chiaramente l'OP non sta usando una scatola UNIX. .. Dubito che si troverà '/ usr/local/bin/ffmpeg' – eepp