我是 ubuntu 新手,需要你的帮助:(32 位 ubuntu 12.10)我的命令:
ffmpeg -i ../output_images/particles%04d.png -r 30 -b 30000k final_movie.avi
它可以正常处理我的 800x800 *.png 图片,但不能处理 512x512 *.png。我收到以下消息:
[image2 @ 0x938a100] Could not find codec parameters (Video: png, 512x512)
在校园机器上,它使用相同的代码对两者起作用。我尝试执行调整大小命令:
for p in *.tga; do convert -resize 800x800 $p $p; done
添加这个之后,它就可以工作了,但是最后我得到的是 800x800 的电影。
我已经安装了以下软件包:
过剩:
sudo apt-get install freeglut3-dev
ffmpeg:
sudo apt-get install ffmpeg
出现“未找到 curl 命令”错误。我使用以下命令修复了此问题:
sudo apt-get install curl
还有另一个“转换:未找到命令”,我使用以下命令修复了它:
sudo apt-get install imagemagick
知道缺少了什么吗?
答案1
误导性的情况
首先,Ubuntu 存储库中所谓的“ffmpeg”并非真正来自 FFmpeg 项目的 ffmpeg,而是来自分支的假版本。这是一个令人困惑的情况。请参阅:
其次,这个假的“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 开发人员”短语):
$ ffmpeg
ffmpeg version N-54152-g730e07f Copyright (c) 2000-2013 the FFmpeg developers
如果显示以下内容,那么您就会知道自己被诅咒了,并且仍然在使用假版本(请注意“Libav 开发人员”一词):
$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
答案2
对我有帮助的是将图像转换格式从 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 ..