热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《FFmpegBasics》中文版06填充视频

正文填充视频意味着向视频帧添加额外的区域以包含额外的内容。当输入应在具有不同宽高比的显示器上播放时,通常需要填充视频。填充视频基础知识对于视频填充,

正文

填充视频意味着向视频帧添加额外的区域以包含额外的内容。当输入应在具有不同宽高比的显示器上播放时, 通常需要填充视频。


填充视频基础知识

对于视频填充,我们使用表格中描述的填充过滤器。


描述在输入视频帧中添加彩色填充,该帧位于协调系统中的[x,y]点,其中输出帧的左上角是[0,0]。 输出的大小由宽度和高度参数设置。
语法pad=width[:height[:x[:y[:color]]]]
中括号里面的参数都是可选的
***********参数的描述
color十六进制形式的RGB颜色值:0xRRGGBB [@AA],其中AA的范围是(0,1)中的十进制值或任何有效的颜色名称,如白色,蓝色,黄色等,默认值为黑色
width, height带填充的输出帧的宽度和高度,宽度的值可以从高度导出,反之亦然,两个参数的默认值都是0
x, y输入左上角的坐标(偏移量)与输出帧的左上角有关,两个参数的默认值均为0
***********参数的高度,宽度,x, y的表达式的可用变量
a纵横比,与iw/ih相同
dar输入显示宽比,与*sar相同
hsub, vsub水平和垂直的色度子样本值,对于像素格式yuv422p, hsub的值为2,vsub为1
in_h, ih输入的高度
in_w, iw输入的宽度
n输入框的数目,从0开始
out_h, oh输出高度,默认值=高度
out_w, ow输出宽度,默认值=宽度
pos位置在输入框的文件中,如果不知道NAN
sar输入样本比例
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


【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

  


原来的图片如下图:

原来的图片

新的图片如下图:

新的图片

后来我又用了一下一个尺寸是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 output

Letterboxing - adding boxes vertically

为了调整更大的宽高宽比,我们需要增加输出高度,它的值将是宽度值除以新的纵横比(ar)。通用公式是:

ffmpeg -i input -vf pad=iw:iw*ar:0:(oh-ih)/2:color output

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了如何将PPT格式转换成PDF,并推荐了一款高效的PPT转换成PDF转换器。该转换器利用最新的超线程技术核心和多核心CPU性能,提高了转换效率和转换质量。同时,该转换器具备万能转换模式,可以轻松实现不同类型、不同内容和不同排版的PPT文件的转换。用户可以通过下载链接获取该转换器。 ... [详细]
  • zabbix中文乱码的问题
    在使用zabbix时,有时候会出现中文乱码的问题,如下:因为zabbix自身对中文简体的支持不完善,需要我们手动的去上传新的字体进行替换:1、在windows获取字体库文件在Windows上的 ... [详细]
  • 计算机网络计算机网络分层结构
    为了解决计算机网络复杂的问题,提出了计算机网络分层结构。计算机网络分层结构主要有OSI7层参考模型,TCPIP4层参考模型两种。为什么要分层不同产商 ... [详细]
  • 本文实例讲述了Android编程实现读取工程中的txt文件功能。分享给大家供大家参考,具体如下:1.众所周知,Android的res文件夹 ... [详细]
author-avatar
红Lisa
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有