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

FFmpeg 可以将视频文件按照固定大小分割么?

  •  
  •   Geekerstar · 2021-05-11 11:06:13 +08:00 · 2628 次点击
    这是一个创建于 1052 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如一个 5G 的视频文件,分割为 5 个 1G 的文件,跪求大佬解答

    13 条回复    2021-06-19 16:11:42 +08:00
    yougoUp
        1
    yougoUp  
       2021-05-11 11:17:10 +08:00
    FFmpeg 使用命令我没尝试过,我是用 C++的 API 做个类似功能。
    累计每一帧大小,达到临界值( 1G )时,先不做处理,继续处理,当处理到临界值的下一 I 帧时合并视频,并且从当前 I 帧开始处理下一个视频。
    AoEiuV020
        2
    AoEiuV020  
       2021-05-11 11:22:54 +08:00
    直接按时长估算?误差很小的,
    efaun
        3
    efaun  
       2021-05-11 11:24:12 +08:00
    FFmpeg -h

    FFmpeg -fs
    CallMeReznov
        4
    CallMeReznov  
       2021-05-11 11:24:38 +08:00
    -fs
    also24
        5
    also24  
       2021-05-11 11:25:35 +08:00
    @efaun
    你确定 -fs 符合楼主的需求嘛?

    https://ffmpeg.org/ffmpeg.html#Video-Options
    -fs limit_size (output)
    Set the file size limit, expressed in bytes. No further chunk of bytes is written after the limit is exceeded. The size of the output file is slightly more than the requested file size.
    cheng6563
        6
    cheng6563  
       2021-05-11 11:45:16 +08:00
    按时长和码率估算就行了
    fgodt
        7
    fgodt  
       2021-05-11 11:51:45 +08:00
    最简单的是按时常来估算
    GalaDOS
        8
    GalaDOS  
       2021-05-11 12:05:13 +08:00
    恒定码率的视频,2L 的方法一般就可以了
    非恒定码率的视频(比如用-crf 编的),或者希望精度高一点(再高也会受关键帧限制),可以自己修改 segment.c,加个 segment_size 选项
    imn1
        9
    imn1  
       2021-05-11 12:33:45 +08:00
    分割后能播和不能播是两码事,后者跟 ffmpeg 无关
    RedisMasterNode
        10
    RedisMasterNode  
       2021-05-11 12:37:35 +08:00
    @AoEiuV020 这个实际用起来误差还挺大的...取决于不同场景(比如运动和静止、噪点多少、画面风格)的分布,而且也得看你说的误差是接受多少范围内,比如说 10MiB 范围内算误差的话,那应该超出会挺多,如果说 100M 的误差,视频原本就小的话可能还是可以满足,如果是蓝光(例如 20-30G/120min )的话,基本没希望
    no1xsyzy
        11
    no1xsyzy  
       2021-05-11 21:33:04 +08:00
    精确等分是不可能的。

    1.
    时间 -> 尺寸 的函数是一个局部线性函数
    局部线性函数可以迭代求反,参考火星坐标系解密算法,或者更快速地,使用牛顿迭代法。

    2.
    -fs 再设小一点,拿到前一个视频结束的时间点补下一个(但如果你是等分的话,可能 -fs 反而要设大一点,避免最后尾部多出来几 MiB 的尾巴)。
    视频网站都是定时长的,不是有过 5 分钟诅咒之类的事儿嘛
    wdssmq
        12
    wdssmq  
       2021-05-12 18:27:20 +08:00
    MKVToolNix 可以按时间,,忘记能不能按大小了。。
    balloonreddit
        13
    balloonreddit  
       2021-06-19 16:11:42 +08:00
    能不能按场景分割
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3350 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:22 · PVG 21:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.