Jika saya menjalankan perintah ffmpeg dari terminal, saya mendapatkan hasil yang diinginkan:
ffmpeg -i src.mp4 -ar 22050 -ab 32 -f flv -s 320x240 video.flv
Output terminal
... video: 3404kB audio: 1038kB tajuk global: 0kB muxing overhead 2,966904%
Dan video.flv dibuat dengan benar .
Kemudian, jika dipanggil melalui PHP exec:
exec("ffmpeg -i src.mp4 -ar 22050 -ab 32 -f flv -s 320x240 video.flv", $o, $v);
var_dump($o);
var_dump($v);
outputnya adalah:
array (0) {} int (1)
Dan tidak ada file yang dibuat .
Adakah pemikiran tentang cara mendekati ini?
Saya bisa exec('whoami')
tanpa masalah.
Saya telah menggunakan path lengkap ffmpeg juga: /usr/local/bin/ffmpeg
command-line
ffmpeg
php
goliatone
sumber
sumber
output
, bukan stderr.Jawaban:
tambahkan "2> & 1" di akhir perintah dan itu akan bekerja:
sumber
benar, masalahnya adalah bahwa Anda menggunakan exec bukan shell_exec intinya adalah bahwa lingkungan exec tidak tahu tentang ffmpeg yang dapat dieksekusi, tetapi shell_exec tidak, karena ia menggunakan env. dari bash / shell
Solusi ini menggunakan path lengkap ke ffmpeg yang dapat dieksekusi, mis. / usr / bin / ffmpeg
sumber
/usr/local/bin/ffmpeg
juga.