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

FFmpeg 怎么支持 segment_size 选项?

  •  
  •   icoming · 2023-04-19 21:32:14 +08:00 · 2071 次点击
    这是一个创建于 621 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用来限定文件分段大小的这个选项

    ChatGPT 说从 4.1 版本( 2018 年 11 月发布的)开始有这选项,但是我在官网下载的编译好的没有这个选项啊

    然后我就想自己编译,Git clone 源码后,按照 ChatGPT 说的配置添加 segment 支持后编译安装,结果还是没有这个选项

    ./configure --enable-gpl --enable-libx264 --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libaom --enable-version3 --enable-libfdk-aac --enable-nonfree --enable-muxer=segment
    

    到底 FFmpeg 有没有这个选项???

    第 1 条附言  ·  2023-04-19 23:57:50 +08:00
    已解决。

    编译时增加选项 `--enable-libavformat` 即可
    第 2 条附言  ·  2023-04-20 00:47:04 +08:00
    抱歉,验证结果的时候看花眼了。问题并没有解决!!!

    `--enable-libavformat` 已过时!!!
    第 3 条附言  ·  2023-04-21 00:23:47 +08:00

    找个一个还满意的办法:

    1. 计算分段数:文件大小/单文件的最大值,向上取整:N
    2. 通过 ffprobe 获取视频的时长(秒):L
    3. N/L 即时每个分段的时长(秒):S
    4. ffmpeg 切割视频:ffmpeg -i input.mp4 -c copy -f segment -segment_time <S> -reset_timestamps 1 -segment_start_number 1 output%02d.mp4

    结果还不错,切割为 300MB 的文件,实际基本是280MB左右。

    10 条回复    2023-04-20 15:04:43 +08:00
    hxy100
        1
    hxy100  
       2023-04-20 00:42:14 +08:00
    mark ,刚准备搜,就在这里看到了答案
    icoming
        2
    icoming  
    OP
       2023-04-20 00:46:18 +08:00
    @hxy100 可是我想说,这个答案是错误的。`--enable-libavformat` 已过时
    mingl0280
        3
    mingl0280  
       2023-04-20 03:28:23 +08:00 via Android
    直接搜了一下, 好像要搭配-g time 指定关键帧间隔。
    icoming
        5
    icoming  
    OP
       2023-04-20 09:08:37 +08:00
    @mingl0280 因为我要上传到 TG 备份(限制 2GB ),而不同视频的帧数差别太大,不便根据时长切割,只能根据文件大小切割。
    icoming
        6
    icoming  
    OP
       2023-04-20 09:10:20 +08:00
    @NessajCN ChatGPT 真的是喜欢胡编乱造,凸(艹皿艹 )
    leaflxh
        7
    leaflxh  
       2023-04-20 10:15:28 +08:00
    比较不是那么脱裤子放屁的办法,用 7z 仅存储压缩算法(应该不会进行压缩),然后分卷压缩,可以指定每个分卷的大小
    leaflxh
        8
    leaflxh  
       2023-04-20 10:18:07 +08:00
    大概直接切是没有根据大小进行分片的选项 https://ffmpeg.org/ffmpeg-formats.html#toc-Options-16
    leaflxh
        9
    leaflxh  
       2023-04-20 10:19:26 +08:00
    重新指定关键帧的话应该会对视频进行二压,可能会降低质量
    zmcity
        10
    zmcity  
       2023-04-20 15:04:43 +08:00
    1. 调用命令先判断一下码流,然后再用时间间隔切。
    2. 调 api re-render ,判断写入到文件中的大小,即将超过你大小的时候结束输出当前视频,开始输出下一个视频。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1305 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 17:40 · PVG 01:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.