如何修复 ffmpeg 中的 "Unable to find a suitable output format for '/'" 错误 运行 PHP
How to fix "Unable to find a suitable output format for '/'" error in ffmpeg running with PHP
我想在上传后在服务器上压缩视频。
我正确安装了 ffmpeg,当我从命令行运行
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 -vcodec h264 -acodec aac -strict -2 output.mp4
有效!
但是如果我 运行 来自 PHP 的相同命令与 exec,
class VideoCompress {
function compress($path, $name){
if (`which ffmpeg`) {
exec("cd \"$path\";ffmpeg -i \"$name\" -vcodec libx265 -crf 28 -vcodec h264 -acodec aac -strict -2 \"bk_$name\" / 2>&1", $o);
print_r8($o);
}
}
}
它失败并且return这个错误
Array
(
[0] => ffmpeg version N-48518-g27c94c57dc-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
[1] => built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
[2] => configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
[3] => libavutil 56. 26.100 / 56. 26.100
[4] => libavcodec 58. 48.100 / 58. 48.100
[5] => libavformat 58. 26.101 / 58. 26.101
[6] => libavdevice 58. 7.100 / 58. 7.100
[7] => libavfilter 7. 48.100 / 7. 48.100
[8] => libswscale 5. 4.100 / 5. 4.100
[9] => libswresample 3. 4.100 / 3. 4.100
[10] => libpostproc 55. 4.100 / 55. 4.100
[11] => Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'WebHD_720p.mp4':
[12] => Metadata:
[13] => major_brand : isom
[14] => minor_version : 512
[15] => compatible_brands: isomiso2avc1mp41
[16] => encoder : Lavf57.71.100
[17] => Duration: 00:03:23.22, start: 0.000000, bitrate: 1890 kb/s
[18] => Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 9:10 DAR 8:5], 1754 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
[19] => Metadata:
[20] => handler_name : VideoHandler
[21] => Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
[22] => Metadata:
[23] => handler_name : SoundHandler
[24] => [NULL @ 0x59fb100] Unable to find a suitable output format for '/'
[25] => /: Invalid argument
)
知道如何修复它吗?
这些命令不一样,第二个有一个“/”而不是 output.mp4
为了帮助调试,可以做一些类似的事情
if (`which ffmpeg`) {
$command = "cd \"$path\";ffmpeg -i \"$name\" -vcodec libx265 -crf 28 -vcodec h264 -acodec aac -strict -2 \"bk_$name\" 2>&1";
print_r($command);
exec($command, $o);
}
我想在上传后在服务器上压缩视频。 我正确安装了 ffmpeg,当我从命令行运行
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 -vcodec h264 -acodec aac -strict -2 output.mp4
有效!
但是如果我 运行 来自 PHP 的相同命令与 exec,
class VideoCompress {
function compress($path, $name){
if (`which ffmpeg`) {
exec("cd \"$path\";ffmpeg -i \"$name\" -vcodec libx265 -crf 28 -vcodec h264 -acodec aac -strict -2 \"bk_$name\" / 2>&1", $o);
print_r8($o);
}
}
}
它失败并且return这个错误
Array
(
[0] => ffmpeg version N-48518-g27c94c57dc-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
[1] => built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
[2] => configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
[3] => libavutil 56. 26.100 / 56. 26.100
[4] => libavcodec 58. 48.100 / 58. 48.100
[5] => libavformat 58. 26.101 / 58. 26.101
[6] => libavdevice 58. 7.100 / 58. 7.100
[7] => libavfilter 7. 48.100 / 7. 48.100
[8] => libswscale 5. 4.100 / 5. 4.100
[9] => libswresample 3. 4.100 / 3. 4.100
[10] => libpostproc 55. 4.100 / 55. 4.100
[11] => Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'WebHD_720p.mp4':
[12] => Metadata:
[13] => major_brand : isom
[14] => minor_version : 512
[15] => compatible_brands: isomiso2avc1mp41
[16] => encoder : Lavf57.71.100
[17] => Duration: 00:03:23.22, start: 0.000000, bitrate: 1890 kb/s
[18] => Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 9:10 DAR 8:5], 1754 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
[19] => Metadata:
[20] => handler_name : VideoHandler
[21] => Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
[22] => Metadata:
[23] => handler_name : SoundHandler
[24] => [NULL @ 0x59fb100] Unable to find a suitable output format for '/'
[25] => /: Invalid argument
)
知道如何修复它吗?
这些命令不一样,第二个有一个“/”而不是 output.mp4
为了帮助调试,可以做一些类似的事情
if (`which ffmpeg`) {
$command = "cd \"$path\";ffmpeg -i \"$name\" -vcodec libx265 -crf 28 -vcodec h264 -acodec aac -strict -2 \"bk_$name\" 2>&1";
print_r($command);
exec($command, $o);
}