我有一些需要将MP4格式的4K 3840x2160素材降低到1080p。我尝试跑步
ffmpeg -i orig.mp4 -vf scale=1920:1080 smaller.mp4
但是结果却是非常差的质量,整个图像都是由正方形的“平铺”组成,好像我在放大4:1。
这是运行此命令的输出:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'origs/P1000003.MP4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
Duration: 00:05:14.48, start: 0.000000, bitrate: 95903 kb/s
Stream #0.0(und): Video: h264 (High), yuvj420p, 3840x2160 [PAR 1:1 DAR 16:9], 95792 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 125 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x22a3420] w:3840 h:2160 pixfmt:yuvj420p
[scale @ 0x22a3ce0] w:3840 h:2160 fmt:yuvj420p -> w:1920 h:1080 fmt:yuv420p flags:0x4
Output #0, mp4, to '1-short.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2015-02-19 17:10:38
encoder : Lavf53.21.1
Stream #0.0(und): Video: mpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 2015-02-19 17:10:38
Stream #0.1(und): Audio: libvo_aacenc, 48000 Hz, stereo, s16, 200 kb/s
Metadata:
creation_time : 2015-02-19 17:10:38
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 125 fps= 6 q=31.0 Lsize= 968kB time=5.00 bitrate=1586.7kbits/s
video:842kB audio:123kB global headers:0kB muxing overhead 0.421047%
我从经验中知道ffmpeg是一个出色的工具,因此我必须以某种方式搞乱选项/参数...
我怎样才能做到这一点?
@LordNeckbeard我刚刚添加了控制台输出。我想缩小尺寸,以便与与我一起工作的人更轻松地共享这些剪辑。
—
lara michaels's
不要忘记
—
Peter Cordes
-c:a copy
,因为您不需要或不需要重新编码音频流。使用-map 0
复制任何章节元数据,或其他的东西。(默认情况下,ffmpeg只需要1 vid + 1 aud。)
而且,
—
彼得·科德斯
-sws_flags lanczos+print_info
将使用比默认更好的缩放算法(我认为是双线性的)。stlb的答案涵盖了过程的视频编码部分。
@PeterCordes或者,
—
llogan 2015年
scale=1920:-2:flags=lanczos
。我还打算-2
在我不存在的答案中提及规模。对于那些谁不知道,你可以把-2
在宽度或高度,并同时保持纵横比它会自动提供正确的价值和制作由2的值整除(由libx264为YUV420P输出需要)。
-t 10
以产生10秒的输出。为什么要缩小尺寸?您的缩放输出的用例是什么?此信息将帮助我提供更准确的答案。