ffmpeg 如何获取视频尺寸?想把视频尺寸缩小为原尺寸的一半

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg 如何获取视频尺寸?想把视频尺寸缩小为原尺寸的一半相关的知识,希望对你有一定的参考价值。

ffmpeg -i a.avi -s 368*208 b.avi
这样只能缩放到固定尺寸,我想根据原尺寸进行一定比例的缩放怎么做呢?
另外
ffmpeg -i a.avi b.avi
这样做按说得到的 b.avi 跟a.avi应该完全一样,可是实际上看起来一样,但是文件大小缩小了将近10倍,是因为ffmpeg有默认的压缩方式吗,哪位高手晓得?

参考技术A 重新编码啊。-vcodec libx264 -r 15 -s 600x450 -aspect 4:3 -vb 320k -acodec libmp3lame -ar 44100 -ab 32k -ac 2
你不想改变就是 。-vcodec copy -acodec copy追问

果然,-vcodec copy -acodec copy 可以保留原来的编码方式,得到跟原来一样大小的avi文件。
可是关于分辨率的问题,
-s 600x450 是说你必须规定好了新的分辨率是600*450,
我主要是想获取输入视频的分辨率,然后长宽个降低一半这怎么做呀?麻烦高手指点一二

参考技术B

缩小为原尺寸的一半:

ffmpeg -i a.mp4 -vf scale="iw/2:ih/2" b.mp4


iw 指 input width 即输入(视频)的宽度

ih 指 input height 即输入(视频)的高度


ffmpeg -i a.avi b.avi b.avi的大小和a.avi不一样是因为ffmpeg重编码了,用-c copy来让所有流都复制,ffmpeg就不会重编码了:

ffmpeg -i a.avi -c copy b.avi

FFmpeg 给视频增加黑边

使用FFmpeg给视频增加黑边需要用到 pad 这个滤镜,具体用法如下:
    -vf pad=1280:720:0:93:black

按照从左到右的顺序依次为:
​    “宽”、“高”、“X坐标”和“Y坐标”,宽和高指的是输入视频尺寸(包含加黑边的尺寸),XY指的是视频所在位置。

比如一个输入视频尺寸是1280x534的源,想要加上黑边变成1280x720,那么用上边的语法可以实现,93是这样得来的,(720-534)/2。

如果视频原始1920x800的话,完整的语法应该是:
    -vf 'scale=1280:534,pad=1280:720:0:93:black'

先将视频缩小到1280x534,然后在加入黑边变成1280x720,将1280x534的视频放置在x=0,y=93的地方,
FFmpeg会自动在上下增加93像素的黑边。
注:black可以不写,默认是黑色

以上是关于ffmpeg 如何获取视频尺寸?想把视频尺寸缩小为原尺寸的一半的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg 给视频增加黑边

ffmpeg如何把5秒内的视频转成wep图片,并且每隔5秒执行一次的命令

FFMpeg SDK使用8调用FFmpeg SDK实现视频缩放

如何在 PHP 中获取视频时长、尺寸和大小?

mediaelement.js - 具有固定最大尺寸的响应式视频

ffmpeg:如何将 wav 作为音频输入来创建视频?