我在一台服务器上使用 ffmpeg 将任意视频格式转换为 3gp 文件格式。但在另一台服务器上却不行。
以下是我的脚本:
exec("ffmpeg -i test.flv -sameq -acodec libmp3lame -ar 22050 -ab 96000
-deinterlace -nr 500 -s 320x240 -aspect 4:3 -r 20 -g 500 -me_range 20
-b 270k -deinterlace -f flv -y test.3gp ");
谁能告诉我脚本中有什么问题?
以下是我的 ffmpeg 设置:
root@ninja [~]# ffmpeg -formats ffmpeg 版本 CVS,内部版本 3277056,版权所有 (c) 2000-2004 Fabrice Bellard 配置:--enable-mp3lame --enable-libogg --enable-gpl --disable-mmx --enable-shared 构建于 2009 年 6 月 17 日 10:51:43,gcc:4.1.2 20080704 (Red Hat 4.1.2-44)
答案1
“-f flv” 不对。您编码为 3gp,而不是 flv。我认为 acodec 应该是 aac,vcodec 应该是 h263,除非 3gp 编解码器比我想象的更宽泛。
第三件事是,在某个版本中,他们改变了编解码器的名称。如果你有旧版本的 ffmpeg(上面写着 2004 年),它可能是“mp3”而不是“libmp3lame”,除非我的记忆错了。
您也有一些冲突的参数,但 ffmpeg 可能只采用最后一个。-sameq(匹配源质量)与 -b(调整恒定比特率的质量)冲突,并且您有两次 -deinterlace。
答案2
您是否无法从脚本中捕获任何错误消息?
我假设输出来自您的第一个服务器?检查第二个服务器上的 ffmpeg 版本是否支持 flv 和 3gp,我知道由于某些国家/地区的专利问题,某些版本的 Linux 附带了残缺版的 ffmpeg。