《FFmpeg Basics》中文版-06-填充视频
写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。正文填充视频意味着向视频帧添加额外的区域以包含额外的内容。当输入应在具有不同宽高比的显示器上播放时, 通常需要填充视频。填充视频基础知识对于视频填充,我们使用表格中描述的填充过滤器。
描述在输入视频帧中添加彩色填充,该帧位于协调系统中的[x,y]点,其中输出帧的左上角是[0,0]。 输出的大小由宽度和高度参数设置。语法pad=width[:height[:x[:y[:color]]]]中括号里面的参数都是可选的***********参数的描述color十六进制形式的RGB颜色值:0xRRGGBB [@AA],其中AA的范围是(0,1)中的十进制值或任何有效的颜色名称,如白色,蓝色,黄色等,默认值为黑色,请参见颜色有关详细信息,请参阅FFmpeg基本介绍章节中的名称部分width, height带填充的输出帧的宽度和高度,宽度的值可以从高度导出,反之亦然,两个参数的默认值都是0x, y输入左上角的坐标(偏移量)与输出帧的左上角有关,两个参数的默认值均为0***********参数的高度,宽度,x, y的表达式的可用变量a纵横比,与iw/ih相同dar输入显示宽比,与*sar相同hsub, vsub水平和垂直的色度子样本值,对于像素格式yuv422p, hsub的值为2,vsub为1in_h, ih输入的高度in_w, iw输入的宽度n输入框的数目,从0开始out_h, oh输出高度,默认值=高度out_w, ow输出宽度,默认值=宽度pos位置在输入框的文件中,如果不知道NANsar输入样本比例t时间戳以秒表示,如果输入时间戳未知x, yx和y的偏移量由x和y表示,或者NAN如果没有指定
例如,为了在一个svga大小的照片周围创建一个30像素宽的粉红色框架,我们可以使用以下命令:ffmpeg -i photo.jpg -vf pad=860:660:30:30:pink framed_photo.jpg
这里面给大家说一下,我自己测试的结果是,我首先用了一张1920*1200大小的图片,一点问题都没有,命令如下:ffmpeg -i /Users/zhangfangtao/Desktop/Work/002.jpg -vf pad=1980:1260:30:30:pink /Users/zhangfangtao/Desktop/Work/003.jpg原来的图片如下图:
原来的图片新的图片如下图:
新的图片后来我又用了一下一个尺寸是250*250的图片,做实验,结果发现乱码了:指令如下:ffmpeg -i /Users/zhangfangtao/Desktop/Work/001.jpg -vf pad=310:310:30:30:pink /Users/zhangfangtao/Desktop/Work/003.jpg原图如下:001.jpg生成的图片如下:(虽然你们看到的没花屏,不过在我这儿确实是花的)003.jpg我看到的,其实这是一张图,我上传上去就正常了见了鬼的图片。。。。从4:3到16:9的填充视频有些设备只能以16:9的宽高比播放视频,而4:3宽高比的视频必须在两种尺寸的水平方向上进行填充。 在这种情况下,高度保持不变,宽度等于高度值乘以16/9。 x值(输入视频帧水平偏移量)从表达式(output_width - input_width)/ 2开始计数,因此填充的语法为:ffmpeg -i input -vf pad=ih*16/9:ih:(ow-iw)/2:0:color output例如,不知道电影的确切分辨率。mpg文件有4:3的长宽比,我们可以在默认的黑色中添加所谓的“pillarbox”命令:ffmpeg -i film.mpg -vf pad=ih*16/9:ih:(ow-iw)/2:0 film_wide.avi从16:9到4:3的填充视频为了显示在4:3高宽比的显示中所创建的视频,我们应该垂直地填充两个大小的输入。因此,宽度保持不变,高度为宽* 3/4。y值(输入视频帧垂直偏移)是从表达式(output_height - input_height)/2中计算的,填充的语法为:ffmpeg -i input -vf pad=iw:iw*3/4:0:(oh-ih)/2:color output为啥我自己测试的时候都是失败的呢%>_<%。。。语法错误例如,如果不知道输入文件的确切分辨率,我们可以在hd_video中添加默认为黑色的“letterbox”。avi文件在16/9宽比与命令:ffmpeg -i hd_video.avi -vf pad=iw:iw*3/4:0:(oh-ih)/2 video.avi*同样是语法错误。。。我测试不了%>_<%填充从和到不同的纵横比描述了4:3和16:9的填充率是最常见的,但例如,电视广告在14:9的长宽比中创建,一些电影的比例比16/9大。Pillarboxing - adding boxes horizontally为了调整较小的宽高宽比,我们需要增加输出宽度,它的值将是高度值乘以一个新的纵横比(ar)。通用公式是:ffmpeg -i input -vf pad=ih*ar:ih:(ow-iw)/2:0:color outputLetterboxing - adding boxes vertically为了调整更大的宽高宽比,我们需要增加输出高度,它的值将是宽度值除以新的纵横比(ar)。通用公式是:ffmpeg -i input -vf pad=iw:iw*ar:0:(oh-ih)/2:color output