「ffmpegの基礎」中国語版 - 15.ピクチャー

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


​	% 后面的数字必须和实际文件的数字所使用的数字位数相同。
リリース7件のオリジナルの記事 ウォンの賞賛4 ビュー809

おすすめ

転載: blog.csdn.net/qq_34305316/article/details/103937930