V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
q770787217
V2EX  ›  FFmpeg

FFmpeg 技能学习疑问_视频缩放

  •  
  •   q770787217 · 2021-02-22 14:51:28 +08:00 · 1528 次点击
    这是一个创建于 1394 天前的主题,其中的信息可能已经有所发展或是发生改变。
    FFmpeg 技能学习疑问_视频缩放
    原视频 1.MP4 分辨率 540x960
    需要 640X480
    解决 1
    ffmpeg -i 1.mp4 -vf "scale=540:960,pad=1280:960:370:0:black" output.mp4
    ffmpeg -i output.mp4 -vf scale=640:-1 output_01.mp4
    问题麻烦 先要放大 再缩小 不能一步到位

    ffmpeg -i 1.mp4 -vf "scale=540:960,pad=640:480:50:0:black" output00.mp4
    出错
    2 条回复    2021-02-24 12:40:07 +08:00
    AX5N
        1
    AX5N  
       2021-02-22 15:19:03 +08:00
    你到底要干嘛,把一个 9:16 的视频改成 4:3 ?

    > ffmpeg -i a.mp4 -vf scale=640x480,setdar=4:3 output.mp4
    ungrown
        2
    ungrown  
       2021-02-24 12:40:07 +08:00
    #1 楼是设定显示宽高比来强制压缩好的视频在被播放器回放时拉伸为 4:3,但鉴于源视频是个竖屏,我没理解错的话这么搞是要严重变形的(矮胖)

    我个人不建议修改 PAR SAR DAR 这些涉及画面比例的东西,总觉得容易不小心骗到别人活着被别人骗,后续转码也可能采坑,总之除非别无他法,否则我不喜欢改动这些东西

    楼主的代码看起来是想把一个竖屏源缩小放到一个 640x480 的画面里,两侧加黑边。其实你的命令就仅仅只差一个参数。下面这个参数是我平时将图片序列压成视频用到的:

    scale={width}:{height}:force_original_aspect_ratio=1,pad={width}:{height}:(ow-iw)/2:(oh-ih)/2

    {width}和{height}这两个是变量,是最终输出的宽和长。上面那一串里也只有这两个是变量,ow iw oh ih 都是 ffmpeg 内部的运行时变量名称,分别表示输出和输入的宽和长,这样指定 pad 就不用自己根据具体的数值来计算了,当然这样是把源视频内切于输出画面中并且居中的(一般都是要这样的效果嘛)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5793 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:42 · PVG 09:42 · LAX 17:42 · JFK 20:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.