15.画像処理
FFmpegのツールの主な目的は、画像フォーマットのオーディオやビデオ、だけでなく、ffmpegのコーデック多様性を処理するように設計されているが、写真関連タスクの多くは迅速に完了することができます。Webサーバで使用するffmpegのはFFmpegのウェブホストは、「動画をWeb上」に記載されているサポートする方法を、ウェブ画像エディタを作成することができます。
サポートされている画像フォーマット
次の表にFFmpegは、画像を表示するために独自の接尾辞を使用して、画像フォーマットをサポートしていました。以下のリストにおいて、LJPEG(ロスレスJPEG)に加えてさらにEXR、PICに、復号可能とPTXの、符号化することができます。
画像を作成します。
ビデオからのスクリーンショット
あなたが特定の時間の画像としてビデオフレームを保存したいときは、オプションが最初から遅延時間を指定するには、(スタートから求める)-ssを使用することができます。私たちは、フレームtのための時間を節約したい、構文は次のとおりです。
ffmpeg -i input -ss t image.type
-ssオプションは、入力ファイルの前に配置することができますが、そうすることは悪いと正確な時間につながります。私たちは1時間23分絵videoclip.avi 45秒を保存したい場合たとえば、コマンドは次のとおりです。
ffmpeg -i videoclip.avi -ss 01:23:45 image.jpg
GIFとして保存された映像から、
ビデオがフレームから構成され、これらのフレームは、フレームの代わりにGIFファイルとして保存することができます。アニメーションGIFファイルイメージタイプですが、それは多くの場合、Webページ上のバナーやショートアニメーションとして使用されています。GIFフレームが非圧縮保存されているので、短いビデオ、GIF、そのファイルサイズが非常に大きくなる可能性があり、長い長い時間のためのGIFはそう。たとえば、次のようにアニメーションGIFファイル(他の依存)に短いSWFファイル(FLASHを再生するためのプラグインの必要性に関するページ)は、その後、ピクセルフォーマットがRGB24を設定する必要があり、コマンドは次のとおりです。
ffmpeg -i promotion.swf -pix_fmt rgb24 promotion.gif
画像を保存するために、ソースからFFmpegのビデオ
別のオプションは、内蔵のFFmpegのビデオソースを使用して画像を作成することで、映像ソースは以下のとおりです。
Mptestsrcデフォルト解像度は320×240ピクセルの521x521ピクセルのビデオソースピクセル他のビデオソースです。効果は、ほとんどのカラー映像ソースである、それは任意の色や画像の任意のサイズを生成することができ、たとえば、あなたは728×90のバナー画像のピクセルサイズを生成したい、我々はコマンドを使用することができます。
ffmpeg -f lavfi -i color=c=#008080:s=728x90 leaderboard.jpg
视频转化为图片
视频文件是由帧组成的,我们可以将这些帧保存成图片,因此生成的图片的数量等于视频帧率和视频时长的乘积。例如,clip.avi 有 1 分钟长,其帧率为 25 fps,那么下面的命令会生成 60x25=1500 张图片,每秒生成 25张图片:
ffmpeg -i clip.avi frame%d.jpg
输出目录中会包含新生成的 1500 张图片,他们的名称为 frame1.jpg , frame2.jpg 等。如果想要让生成的文件名称长度一样,那么我们可以在 % 后加一个数据来指定跟随的数字所使用的位数,例如:
ffmpeg -i clip.avi frame%4d.jpg
此时,新生成的图片名称就会变成 frame0001.jpg , frame002.jpg , … , frame1500.jpg。
调整图片的尺寸,裁剪图片,填充图片
调整图片大小的方式和调整视频大小的方式是一样的。例如。默认情况下,color 视频源的输出图像的分辨率为 320x240 像素,我们可以用两种方式来将它的尺寸调整为 VGA 大小:
-
对 color 视频源使用 s 或 size 参数
-
对输出使用 -s 选项
例如以下两条命令,它们的效果相同,都是生成一张 CIF (352x288)大小的橘色图片:
ffmpeg -f lavfi -i color=c=orange:s=cif orange_rect1.png
ffmpeg -f lavfi -i color=c=orange -s cif orange_rect2.png
在 filterchains 中,通过参数的方式来指定尺寸是非常有用的,这是因为在 filterchains 的处理中,当我们需要一个特定分辨率大小的输入时,我们不能通过使用选项的方式来指定尺寸,只能使用参数的方式。最常见的例子就是使用 color 作为一个输入进行覆盖操作。
裁剪图片和裁剪视频一样,都使用 crop filter 来完成。例如,下面的命令就会从 rgbtestsrc 视频源的画面中心位置截取 150x150 像素的方框:
ffmpeg -f lavfi -i rgbtestsrc -vf crop=150:150 crop_rgb.png
填充图片的方式和填充视频的方式相同,都是使用 pad filter,例如,下面的命令为 smptebars 视频源创建了一个橘色的边框:
ffmpeg -f lavfi -i smptebars -vf pad=360:280:20:20:orange pad_smpte.jpg
翻转,旋转和覆盖图片
翻转图片,创建图片的镜像对称版本,和翻转视频类似,都是使用 hflip 和 vflip filter 完成的。例如,下面两个命令用于翻转输入的图片,第一个水平翻转,第二个垂直翻转:
ffmpeg -i orange.jpg -vf hflip orange_hflip.jpg
ffmpeg -i orange.jpg -vf vflip orange_vflip.jpg
旋转图片和旋转视频一样,也是使用 transpose filter,它有四个可使用的值:
-
0 :逆时针方向旋转90度,然后垂直翻转
-
1:顺时针方向旋转90度
-
2:逆时针方向旋转90度
-
3:顺时针方向旋转90度,然后垂直翻转
例如,想要将图片顺时针旋转90度,命令如下:
ffmpeg -i image.png -vf transpose=1 image_rotated.png
和视频覆盖一样,图片也可以使用 overlay filter 来完成覆盖操作。例如,想要在 rgbtestsrc 视频源上覆盖一个 smptebars,命令如下:
ffmpeg -f lavfi -i rgbtestsrc -s 400x300 rgb.png
ffmpeg -f lavfi -i smptebars smpte.png
ffmpeg -i rgb.png -i samte.png -filter_complex oevelay=(W-w)/2:(H-h)/2 rgb_smpte.png
图片类型转化
在 FFmpeg 中,几乎所有被支持的图片类型都可以被转化,除了 EXR , LJPEG , PIC , PTX 文件类型,因为它们不能被解码。转换的语法为:
ffmpeg -i image.type1 image.type2
例如,将一个 PNG 图片转化为 JPG 图片格式,命令如下:
ffmpeg -i illustration.png illustration.jpg
使用图片创建视频
使用一张图片创建视频
使用一张图片来创建视频非常简单。我们可以用一张图片来创建一个静态的视频,然后把多个同样的视频连接(joining video)起来,就可以创建类似幻灯片的效果视频。连接视频将在第 23 章描述。例如,我们想要使用 photo.jpg 创建一个 10 秒钟长的视频,此时我们需要使用 -loop 选项,它的值为布尔值,因此需要赋值为 true 或者 1 等非 0 整数值,命令如下:
ffmpeg -loop 1 -i photo.jpg -t 10 photo.mp4
使用多张图片创建视频
想要使用多张图片来创建视频,图片的名称需要以一个数字来结束,这个数字对应着该图片编码到视频文件时的序列位置。我们还需要在输入文件之前指定媒体的格式,我们使用 image2 format,来表示我们想要从多个图片生成一个视频。例如,有 100 张图片,名称依次为 img1.jpg , img2.jpg , … , img100.jpg ,它可以用来创建帧率为 25 fps 的长为 4 秒的视频,命令如下:
ffmpeg -f image2 -i img%d.jpg -r 25 video.mp4
デジタル写真の顔に最後の名前は、0で始まり、そして、そのようなimg001.jpg、img002.jpgとして数字、同じ数の、...、img100.jpg、その後、私たちは名前の長さを指定する必要がある場合は、次のように、コマンドは次のとおりです。
ffmpeg -f image2 -i img%3d.jpg -r 25 video.mp4
deo.mp4
如果图片名称中最后面的数字是以0开头,且数字位数相同,如 img001.jpg , img002.jpg , ... , img100.jpg,那么我们需要指定名称的长度,命令如下:
ffmpegの-f画像2 -i IMG%3d.jpg -r 25 video.mp4
% 后面的数字必须和实际文件的数字所使用的数字位数相同。