【问题标题】:ffmpeg weird x264 encoding behaviorffmpeg 奇怪的 x264 编码行为
【发布时间】:2016-05-10 03:03:14
【问题描述】:

我有一个 720x480 的视频,显示宽高比为 16:9,我想对其进行裁剪、调整大小和填充,但只是 x264 编码命令让我头疼。

(Screenshot of input.m2v) 这是我的命令:

ffmpeg -ss 1861 -i input.m2v -c:v libx264 -profile:v main -preset:v medium -level 3.1 -x264opts crf=21.228 -t 60 -y -f mp4 output.mp4

这里是 ffmpeg 输出:

(Screen shot of output.mp4)

Input #0, mpegvideo, from 'input.m2v':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mpeg2video (Main), yuv420p(tv), 720x480 [SAR 32:27 DAR 1
6:9], max. 6605 kb/s, 31.02 fps, 59.94 tbr, 1200k tbn, 59.94 tbc
[libx264 @ 02ba84c0] using SAR=32/27
[libx264 @ 02ba84c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 02ba84c0] profile Main, level 3.1
[libx264 @ 02ba84c0] 264 - core 144 r2525 40bb568 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1
interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scene
cut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=21.2 qcomp=0.60 qpmin
=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf56.19.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 720x48
0 [SAR 32:27 DAR 16:9], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc56.21.102 libx264
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))

输出大小为 720x480,显示为 853x480,符合预期。 但看起来框架已经垂直缩放了 1.18 倍,然后裁剪到 480 的高度,所以我失去了框架的顶部和底部。其实行为等价于:

-vf "scale=720:569,crop=720:480:0:0"

虽然我假设纵横比在这里起作用(我认为 1.18 因子实际上是 (16/9)/(720/480)),但我很惊讶 ffmpeg 会突然做到这一点。可能有比我更有知识的人能解释一下吗?

【问题讨论】:

  • 这个网站是针对编程问题的——我们不是一般的软件技术支持。
  • 源和输出的截图?

标签: ffmpeg libx264


【解决方案1】:

根据截图,这里没有错误。

您的来源是 720x480,DAR 16:9,但 Potplayer 将其视频窗口保持在 720x480,同时遵守 M2V 的纵横比,也就是说,第一个视频中的一些信箱填充是由 Potplayer 添加的,不在视频流。在输出中,水平画布被适当地扩展为 853 像素。没有发生缩放。

【讨论】:

  • 非常感谢您抽出宝贵时间就这个问题提供答案。我通常用 VirtualDub 检查填充,它不受纵横比的影响,我没有意识到 Potplayer 可以更改填充。我仍然不明白为什么 Potplayer 以不同的方式显示输入和输出视频,而两者的 DAR 都是 16:9?但这是另一个问题。
猜你喜欢
  • 2014-11-18
  • 2013-01-15
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
相关资源
最近更新 更多