FFmpeg 可以将视频文件按照固定大小分割么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Geekerstar
V2EX    FFmpeg

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

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

    比如一个 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     Solana     5574 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 05:59 PVG 13:59 LAX 22:59 JFK 01:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86