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

标签 php linux video ffmpeg video-processing

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

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

ffmpeg -i $infile -an test.flv

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

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

FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. configuration: --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 --启用libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable-pp --enable-shared --启用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,来自'/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)

最佳答案

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

既然如此,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 是一种选择吗?

关于php - FFMPEG - 启用声音时文件大小为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619061/

相关文章:

javascript - 如何在 PHP if/else 语句中调用 JavaScript 文件?

c++ - 编写插件系统?

ios - 如何在Unity中播放EasyMovieTexture for ios?

Android - 在 vi​​deoView 中更改/重播视频

iphone - 无法使用 MPMoviePlayerViewController 播放视频

php - mysql数据库无法连接cpanel

php 不会从数据库返回整个值

php - 谷歌应用内支付 : howto to handle Google's postback JWT

c - 使用管道将多个字符串发送到子进程

linux - 在 bash linux 中复制一行并粘贴 5 次