这个问题可能非常基本
有没有办法减少有损压缩(WMV,MPEG)格式的帧大小/速率,以获得尺寸较小,格式相同的较小视频。
是否有任何开源或专有的apis?
答案 0 :(得分:81)
ffmpeg提供此功能。你需要做的就是像
一样运行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 1视频编解码器将输入视频文件转换为640 x 480大小和512千比特/秒比特率的视频,然后只复制原始音频流。当然,您可以插入所需的任何值,并使用大小和比特率来实现您正在寻找的质量/尺寸权衡。 documentation
中还介绍了大量其他选项运行ffmpeg -formats
或ffmpeg -codecs
以获取所有可用格式和编解码器的列表。如果您不必针对最终输出定位特定编解码器,则可以使用最先进的编解码器(如H.264)以最小的质量损失实现更好的压缩比。
答案 1 :(得分:37)
如果您想保持相同的屏幕尺寸,可以考虑使用crf factor:https://trac.ffmpeg.org/wiki/Encode/H.264
以下是适用于我的命令:(在Mac上,您需要添加-strict -2
才能使用aac音频编解码器。
ffmpeg -i input.mp4 -c:v libx264 -crf 24 -b:v 1M -c:a aac output.mp4
答案 2 :(得分:28)
使用H.264编解码器,您还可以选择https://trac.ffmpeg.org/wiki/x264EncodingGuide中所述的其他预设,而不是选择固定比特率。我还发现Video encoder comparison at KeyJ's blog(archived version)是一个有趣的读物,它将H.264与Theora和其他人进行了比较。
以下是我尝试的各种选项的比较。录制的视频最初为673M,使用RecordMyScreen在iPad上拍摄。它的持续时间约为20分钟,分辨率为1024x768(视频的一半为空白,因此我将其裁剪为768x768)。为了减小尺寸,我将分辨率降低到480x480。没有音频。
结果,采用相同的1024x768作为基础(并应用裁剪,缩放和a filter):
-b 512k
,大小降至77M(编码时间:1m17秒)。-preset veryslow
(并且没有-b
),它变为70M(编码时间:6分14秒)-b 512k
和-preset veryslow
,大小变为77M(比-b 512k
小100K)。-preset veryslow -crf 28
,我得到一个39M的文件,花了5m47s(对我没有视觉质量差异)。N = 1,所以用一粒盐取结果并进行自己的测试。
答案 3 :(得分:3)
ffmpeg -i <input.mp4> -b:v 2048k -s 1000x600 -fs 2048k -vcodec mpeg4 -acodec copy <output.mp4>
-i输入文件
-b:v输出视频的视频输出以千字节为单位(您必须尝试)
输出视频的-s维度
-fs FILESIZE 以千字节为单位
-vcodec videocodec(使用ffmpeg -codecs
列出所有可用的编解码器)
答案 4 :(得分:3)
有一个适用于Mac和Windows的应用程序,称为Handbrake,我知道这不是命令行内容,而是用于快速打开文件的方法-选择输出文件格式和粗略的输出大小,同时保留有关视频的大部分优点,然后很好,这只是ffmpeg的最佳状态的图形视图... 它确实支持那些顽固的短信的命令行输入。 https://handbrake.fr/downloads.php
答案 5 :(得分:3)
我发现自己最近也想这样做,所以我创建了一个名为Shrinkwrap的工具,该工具使用FFmpeg对视频进行转码,同时保留了尽可能多的原始元数据(包括文件修改时间戳) )。
您可以将其作为docker容器运行:
docker run -v /path/to/your/videos:/vids bennetimo/shrinkwrap \
--input-extension mp4 --ffmpeg-opts crf=22,preset=fast /vids
位置:
然后,它将以递归方式找到所有与扩展名匹配的视频文件,并将它们全部转换为后缀为-tc
的同名文件。
有关更多配置选项,GoPro预设等信息,请参见readme。
希望这对某人有帮助!