ffmpegresize“无法找到编解码器参数”

我是ubuntu的新手,需要你的帮助:(32bit ubuntu 12.10)我的命令:

ffmpeg -i ../output_images/particles%04d.png -r 30 -b 30000k final_movie.avi 

适用于我的800×800 * .png图片,但不适用于512×512 * .png。 在那里我收到以下消息:

 [image2 @ 0x938a100] Could not find codec parameters (Video: png, 512x512) 

在校园机器上,它可以使用相同的代码。 我试着做一个resize-command:

 for p in *.tga; do convert -resize 800x800 $p $p; done 

随着这个添加,它的工作原理,但我最终和800×800电影。


我已经安装了以下软件包:

过剩:

 sudo apt-get install freeglut3-dev 

ffmpeg的:

 sudo apt-get install ffmpeg 

有一个“未找到curl命令”错误。 我修复它:

 sudo apt-get install curl 

还有另一个“转换:命令未找到”,我修复它:

 sudo apt-get install imagemagick 

知道缺少什么吗?

一种误导性的情况

首先,来自Ubuntu存储库的所谓“ffmpeg”并非真正来自FFmpeg项目,而是来自fork的假版本。 这是一个令人困惑的情况。 看到:

  • 谁能告诉我ffmpeg,libav和avconv之间的区别和关系?
  • FFmpeg / Libav情况

其次,这个虚假的“ffmpeg”(和avconv)是非常错误的。 FFmpeg开发非常活跃,使用最新版本的真实ffmpeg很可能会解决这个问题。

获得真正的ffmpeg

你有几个选择:

  • 在Ubuntu上编译ffmpeg – 可自定义,提供最新的代码,但你必须编译(不是很难,不应该花太长时间)。 非侵入系统。
  • 使用静态构建 – 最容易使用但不可自定义; 也是非侵入性的。
  • 使用Jon Severinsson的FFmpeg PPA – 易于启用和安装,但旧的,不可定制

如上所述,每个都有它们的优点和缺点。

使用静态构建

您只需下载存档,解压缩并执行二进制文件即可。 无需编译或安装:

 wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.2013-06-19.tar.gz tar xzvf ffmpeg.static.32bit.2013-03-19.tar.gz 

现在你可以使用它了。 您可以导航到包含ffmpeg的目录,然后运行(注意前面的./ ):

 ./ffmpeg -i input ... output 

……或提供完整的路径,如:

 /home/andy/ffmpeg/ffmpeg -i input ... output 

选择$PATH

如果您在使用ffmpeg命令时想要真正的ffmpeg而不必使用./或必须提供二进制文件的完整路径,那么将ffmpeg二进制文件放在您家中的bin目录中:

 mkdir ~/bin mv ffmpeg ~/bin hash -r 

现在你可以运行ffmpeg ,你就可以准备编码了。 如果你想使用除~/bin之外的其他目录,那么你必须将目录添加到$PATH ,如如何将目录添加到我的路径中所示?

检查间谍

现在使用ffmpeg命令应该显示类似的东西(注意“FFmpeg developers”短语):

 $ ffmpeg ffmpeg version N-54152-g730e07f Copyright (c) 2000-2013 the FFmpeg developers 

如果它显示以下内容,那么您将知道您被诅咒并且假版本仍在使用(请注意“Libav developers”短语):

 $ ffmpeg ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers 

帮助我的是将图像转换格式从png更改为jpeg。 所以makemovie.sh必须看起来像这样:

 #!/bin/bash cd output_images for F in $(ls *.tga); do convert -quality 100 $F ${F%.tga}.jpg; #convert -quality 100 $F ${F%.tga}.png; rm $F; echo done with converting $F; done cd .. THISPATH=$(pwd) export PATH=$PATH:${THISPATH}/ffmpeg/ffmpeg-install/bin/ echo Making the movie now... cd final_movie rm final_movie.avi ffmpeg -i ../output_images/particles%04d.jpg -r 30 -b 30000k final_movie.avi cd ..