使用相同的格式缩小video尺寸并缩小帧尺寸

这个问题可能是非常基本的

有没有办法减less有损压缩(WMV,MPEG)格式的帧大小/速率,以获得具有相同格式的较小尺寸的较小video。

有没有开源或专有apis这个?

ffmpeg提供了这个function。 所有你需要做的是运行类似的东西

ffmpeg -i <inputfilename> -s 640x480 -b 512k -vcodec mpeg1video -acodec copy <outputfilename> 

对于较新版本的ffmpeg,您需要将-b更改为-b:v

 ffmpeg -i <inputfilename> -s 640x480 -b:v 512k -vcodec mpeg1video -acodec copy <outputfilename> 

使用MPEG 1video编解码器将inputvideo文件转换为640 x 480大小的video和512千比特/秒的比特率,然后复制原始audiostream。 当然,你可以插入你需要的任何值,并且随着大小和比特率的变化来实现你正在寻找的质量和尺寸。 文档中还介绍了大量的其他选项

运行ffmpeg -formatsffmpeg -codecs以获取所有可用格式和编解码器的列表。 如果您不必针对最终输出的特定编解码器,则可以使用像H.264这样的最新编解码器,以最小的质量损失获得更好的压缩比。

如果你想保持相同的屏幕尺寸,你可以考虑使用crf因子: https ://trac.ffmpeg.org/wiki/Encode/H.264

这里是适用于我的命令:(在Mac上,您需要添加-strict -2以便能够使用aacaudio编解码器。

 ffmpeg -i input.mp4 -c:v libx264 -crf 24 -b:v 1M -c:a aac output.mp4 

使用H.264编解码器,您也可以select不同的预置位,如https://trac.ffmpeg.org/wiki/x264EncodingGuide中所述; 。 我还在KeyJ的博客 ( 存档版 )中发现了video编码器比较的一个有趣的阅读,它将H.264与Theora等进行了比较。

以下是我尝试的各种选项的比较。 录制的video最初为673M,使用RecordMyScreen在iPad上拍摄 。 它的持续时间约为20分钟,分辨率为1024×768(其中一半的video是空白的,所以我裁剪到768×768)。 为了减小尺寸,我把分辨率降低到480×480。 没有audio。

结果,采取与基地相同的1024×768(并应用裁剪,缩放和filter ):

  • 没有特别的select:95M(编码时间:1m19s)。
  • 只增加了-b 512k ,大小降到了77M(编码时间:1m17s)。
  • 只有-preset veryslow (而不是-b ),它变成了70M(编码时间:6m14s)
  • 使用-b 512k-preset veryslow ,尺寸变成77M(比-b 512k小100K)。
  • -preset veryslow -crf 28 ,我得到一个39M的文件,花了5m47s(与我没有视觉质量差异)。

N = 1,所以拿一粒盐做结果并进行自己的testing。