FFMPEG - 启用声音时文件大小为零

时间:2009-03-06 14:36:29

标签: php linux video ffmpeg video-processing

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

当我使用以下命令抑制声音时,一切都很完美(除了当然,没有声音!)

ffmpeg -i $infile -an test.flv

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

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

  

FFmpeg版本SVN-rUNKNOWN,版权所有(c)2000-2007 Fabrice Bellard,et al。   配置: - 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,et al。配置: - 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 version:49.4.0 libavcodec version:51.40.4 libavformat version:51.12.1 build on Jun 4 2007 11:02:12,gcc:4.1.1 20070105(Red帽子4.1.1-52)

输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'/path/to/7b4e37e703ce0a104f027cb9125b1a19.mp4':持续时间:00:00:32.4,开始:0.000000,比特率:122 kb / s流#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 流映射:流#0.0 - > #0.0流#0.1 - > #0.1

输入流#0.1

的不受支持的编解码器(id = 73728)

2 个答案:

答案 0 :(得分:4)

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

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

可能一个恰当的详细论证会告诉你更多关于这个问题的信息吗?

编辑:

让我们看看我们是否可以获得stderr输出。 运行:

ffmpeg -version 

看看你是否可以获得一些输出。一旦你设法提取了一些stderr输出,我们就可以调查原始问题。

编辑:

所以看起来你正在失去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可以使用支持--enable-libamr-nb --enable-libamr-wb进行编译。

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

答案 1 :(得分:-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
?>