2

我在使用 FFMPEG 从命令行转换视频文件时遇到了一些问题。我正在使用 CentOS 服务器,但不幸的是我没有 shell 访问权限。

当我使用以下命令抑制声音时,一切正常(当然,没有声音!)

ffmpeg -i $infile -an test.flv

但是,当我尝试以任何方式启用声音时,输出的文件的文件大小为零 kb。

FFMPEG 在编译时支持 libmp3lame 和 libfaac,并安装了必要的编解码器。这是服务器上FFMPEG的配置:

FFmpeg 版本 SVN-rUNKNOWN,版权所有 (c) 2000-2007 Fabrice Bellard 等人。配置: --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --enable-libmp3lame --enable-libogg --enable- libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable- pp --enable-shared --enable-pthreads --enable-gpl --disable-strip

这是我尝试过的一些命令的一个非常小的示例,这些命令导致文件大小为 0Kb:

ffmpeg -i $infile test.flv
ffmpeg -i $infile -vcodec copy -acodec ac3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec mp3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec copy $outfile
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec aac $outfile

如果有人可以提供有关这里发生的事情的任何提示,我将非常感激!

编辑- 这是我将 stderr 重定向到文件时的结果

FFmpeg 版本 SVN-rUNKNOWN,版权所有 (c) 2000-2007 Fabrice Bellard 等人。配置: --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --enable-libmp3lame --enable-libogg --enable- libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable- pp --enable-shared --enable-pthreads --enable-gpl --disable-strip libavutil 版本:49.4.0 libavcodec 版本:51.40.4 libavformat 版本:51.12.1 构建于 2007 年 6 月 4 日 11:02:12, gcc:4.1.1 20070105(红帽 4.1.1-52)

输入#0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/to/7b4e37e703ce0a104f027cb9125b1a19.mp4': 持续时间: 00:00:32.4, 开始: 0.000000, 比特率: 122 kb/s Stream #0.0( jpn): 视频: h263, yuv420p, 176x144, 29.97 fps(r) 流#0.1(jpn): 音频: samr / 0x726D6173, 8000 Hz, 单声道

输出 #0,flv,到 '/path/to/test.flv':流 #0.0:视频:flv,yuv420p,176x144,q=2-31,200 kb/s,29.97 fps(c) 流 #0.1:音频:mp3,8000 Hz,单声道,64 kb/s 流映射:Stream #0.0 -> #0.0 Stream #0.1 -> #0.1

输入流 #0.1 不支持的编解码器 (id=73728)

4

2 回答 2

4

您对服务器有什么样的访问权限 - 您必须具备在其上运行命令的能力。

既然如此,错误输出是ffmpeg什么?

一个适当的冗长论证可能会告诉你更多关于这个问题的信息?

编辑:

让我们看看我们是否可以获得标准错误输出。跑:

ffmpeg -version 

看看你能不能得到一些输出。一旦您设法提取了一些标准错误输出,我们就可以调查原始问题。

编辑:

所以看起来你正在丢失stderr- 现在你需要弄清楚如何找回它。

也许:

ffmpeg -version 2>&1

将工作?

编辑:

我们如何到达某个地方 - 不支持输入音频编解码器:

Unsupported codec (id=73728) for input stream #0.1

我不知道是什么Stream #0.1(jpn): Audio: samr / 0x726D6173, 8000 Hz, mono

但是你有问题。

我建议您可能想在本地 Linux 机器上进行调查 - 可能更容易发现问题。

编辑:

http://www.nabble.com/Convert-3gp-samr-file-td20514476.html看来 ffmpeg 可以在 support 下编译--enable-libamr-nb --enable-libamr-wb

重新编译ffmpeg是一个选项吗?

于 2009-03-06T14:46:12.323 回答
-1

我解决了这个问题。这是我的代码:

<?php
   define('FFMPEG_LIBRARY', '/usr/local/bin/ffmpeg');
   $exec_string = FFMPEG_LIBRARY.' -i robot.avi -an output.flv';
   exec($exec_string); //where exec is the command used to execute shell command in php
?>
于 2009-07-23T06:00:53.463 回答