【问题标题】:php - convert avi to mp4, webm and flv using ffmpeg commandphp - 使用 ffmpeg 命令将 avi 转换为 mp4、webm 和 flv
【发布时间】:2015-08-20 02:02:36
【问题描述】:

我的问题是我正在尝试在上传按钮处将视频转换并上传为三种格式。当我尝试将 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 开发者 使用 gcc 4.4.7 20120313 (Red Hat 4.4.7-3) 于 2014 年 8 月 30 日 15:49:19 构建 配置: --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 libav 设备 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”缺少参数

【问题讨论】:

    标签: php video ffmpeg


    【解决方案1】:

    好的,首先您需要使用未编码的文件调试您的 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'
    

    【讨论】:

    • 好的,你能告诉我该命令如何回显文件信息
    • exec("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'",$output) print_r($output)
    • 首先使用 ffmpeg -v 检查您的 ffmpeg 构建,并在测试后将其粘贴到此处以输出带有转换后视频错误的日志
    • exec 命令只显示 Array()。我已经在问题区域粘贴了 ffmpeg -v 看看
    • 好吧,这很正常,因为你没有用这个 lib 构建 ffmpeg;尝试用您的 libmp3 替换它并重试
    猜你喜欢
    • 2014-11-04
    • 2017-02-16
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2012-01-29
    • 2014-07-12
    • 2017-09-22
    相关资源
    最近更新 更多