php - 使用ffmpeg命令将avi转换为mp4,webm和flv

时间:2015-06-05 07:48:07

标签: php video ffmpeg

我的问题是我正在尝试转换并在上传按钮上将视频上传为三种格式。当我试图将avi转换为mp4,webm和flv时,我陷入了第一步。我尝试过各种命令转换为mp4和webm,但没有任何效果。它顺利转换为flv。我在互联网上搜索了很多,但没有一个命令工作。我已将execution_time设置为0,并将set_time_limit(0)设置为无限执行时间。这是我试图转换为mp4和webm

的命令
**For mp4:**

exec("ffmpeg -i input.avi -c:v libx264 -crf 19 output.mp4");
exec("ffmpeg -i input.avi -c:v libx264 -pix_fmt yuv420p output.mp4");
exec("ffmpeg -i input.avi -c:v libx264 -c:a libfaac \ -movflags +faststart output.mp4");

**For webm** 
passthru("ffmpeg -i input.avi output.webm");
passthru("ffmpeg -i input.avi -b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 output.webm");

注意: 对于小于1mb的avi到mp4文件正在成功转换,但是超过1mb的文件显示其转换但其大小为0bytes。

同样,我在将mp4转换为flv时遇到问题。有些文件正在转换,有些则没有。一些大文件正在转换,但一些小文件没有转换。很奇怪。没有权限或php配置设置都没问题。我尝试重命名一个没有转换的文件并上传了。我很困惑为什么会这样。

对这两个问题的任何帮助都非常感谢。

提前致谢。

被修改 / bin $ ffmpeg -v ffmpeg版本0.10.15版权所有(c)2000-2014 FFmpeg开发人员   建于2014年8月30日15:49:19,gcc 4.4.7 20120313(Red Hat 4.4.7-3)   配置: - prefix = / usr --bindir = / usr / bin --datadir = / usr / share / ffmpeg --incdir = / usr / include / ffmpeg --libdir = / usr / lib64 --mandir = / usr / share / man --arch = x86_64 --extra-cflags =' -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector --param = ssp-buffer-size = 4 -m64 -mtune = generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-libass --enable-libcdio --enable-libcelt --enable-libdc1394 --disable-indev = jack --enable-libfreetype --enable -libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable -libv4l2 --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable -debug --disable-stripping --shlibdir = / usr / lib64 --enable-runtime-cpudetect   libavutil 51. 35.100 / 51. 35.100   libavcodec 53. 61.100 / 53. 61.100   libavformat 53. 32.100 / 53. 32.100   libavdevice 53. 4.100 / 53. 4.100   libavfilter 2. 61.100 / 2. 61.100   libswscale 2. 1.100 / 2. 1.100   libswresample 0. 6.100 / 0. 6.100   libpostproc 52. 0.100 / 52. 0.100 缺少选项' v'

的参数

1 个答案:

答案 0 :(得分:0)

首先,您需要使用未编码的文件调试您的exec。 echo您的exec并使用与运行Apache相同的用户将其放入您的shell。

没有ffmpeg的记录我们无法帮助你。

对于我的视频我正在使用它将AVI转换为mp4:

ffmpeg -i 'filename.ext' -threads 0 -c:v libx264 -preset slower -crf 19 -qmin 10 -qmax 51 -c:a libfdk_aac -b:a 128k -y 'output.mp4'