ffmpeg输出+问题


ffmpeg output + issues

在进一步开发代码之前,我正试图让ffmpeg以最基本的格式使用PHP工作。

然而,我不能让它工作,并且没有错误消息或错误指示:-(

我正在尝试:

echo exec("/usr/bin/ffmpeg -y -i /home/xxxxxx/public_html/videos/1746/0765916.avi /home/xxxxxx/public_html/videos/1746/test.mp4"); 

这是在创建一个0kb的文件,但没有其他内容:-(我没有收到错误消息(或其他任何消息!)

(我打开了error_reporting,浏览器或服务器日志中没有显示任何内容)

如果我添加以下内容以获得可用的编解码器:

echo exec("ffmpeg -formats");

这只会输出"更糟"的

我没有访问命令行的权限,因为我使用的是共享托管服务器。

我已经让主机从命令行运行了上面的内容,他们说上面写着"找不到编解码器"或大意是单词。

有没有什么方法可以将任何错误输出到我的php文件中,这样我就可以看到发生了什么。

此外,如果这是问题所在,我该如何安装编解码器(主机会安装它们,但已经提到他们从未在Linux盒子上安装过编解码器,所以如果我也能为他们指出任何安装信息,我将不胜感激)

提前感谢!

编辑:

在添加@stewe建议的代码后,这是尝试转换为mp4 时的输出

(我可以转换为其他格式罚款)

FFmpeg version SVN-r0.5.10-4:0.5.10-1, Copyright (c) 2000-2009 Fabrice
Bellard, et al. configuration: --extra-version=4:0.5.10-1
--prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable-libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad --enable-libdc1394 --enable-shared --disable-static libavutil 49.15. 0 / 49.15. 0 libavcodec 52.20. 1 / 52.20. 1 libavformat 52.31. 0 /
52.31. 0 libavdevice 52. 1. 0 / 52. 1. 0 libavfilter 0. 4. 0 / 0. 4. 0 libswscale 0. 7. 1 / 0. 7. 1 libpostproc 51. 2. 0 / 51. 2. 0 built on
Feb 16 2013 10:07:01, gcc: 4.4.5 Input #0, avi, from
'/home/xxxxx/public_html/videos/1746/0765916.avi':
Duration: 00:01:37.56, start: 0.000000, bitrate: 868 kb/s Stream #0.0:
Video: mpeg4, yuv420p, 480x272 [PAR 1:1 DAR 30:17], 25 tbr, 25 tbn, 25
tbc Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s Output
#0, mp4, to '/home/xxxxx/public_html/videos/1746/test.mp4':
Stream #0.0: Video: mpeg4, yuv420p, 480x272 [PAR 1:1 DAR 30:17],
q=2-31, 200 kb/s, 90k tbn, 25 tbc Stream #0.1: Audio: 0x0000, 48000
Hz, stereo, s16, 64 kb/s Stream mapping: Stream #0.0 -> #0.0 Stream
#0.1 -> #0.1 [mpeg4 @ 0x9fb7880]removing common factors from framerate Unsupported codec for output stream #0.1

如果有人能帮助解决这个问题,因为我理想情况下希望转换为mp4

您可以得到这样的完整输出:

echo shell_exec("ffmpeg -formats 2>&1");

2>&1部分将stderr重定向到stdout,因此您还可以获得错误消息。

您的ffmpeg是古老的

FFmpeg的开发非常活跃,但您使用的是SVN-r0.5.10-4:0.5.10-1版本。这是令人难以置信的老,是不支持的FFmpeg项目。

我敢打赌,一旦你得到了一个最新的版本,它就会像预期的那样工作。请注意,一旦升级,如果您的新版本支持libx264,那么它将为MP4输出编码H.264视频。您当前的老年构建正在输出MPEG-4第2部分视频。

升级选项

请注意,您不能只是"安装一个编解码器"并期望FFmpeg能够工作。以下是一些升级方法:

  • 下载ffmpeg的内部版本。把你的脚本指向它。简单明了。

  • 编译ffmpeg。请参阅逐步编译指南。应该在共享服务器上工作,只要它们提供编译所需的适当包(至少是gccmake)。

  • 要求您的主机升级他们可能知道也可能不知道如何做到这一点,或者他们可能只提供另一个古老的建筑。