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

FFmpeg 怎么支持 segment_size 选项?

  •  
  •   icoming · 344 天前 · 1289 次点击
    这是一个创建于 344 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 条附言  ·  344 天前
    已解决。

    编译时增加选项 `--enable-libavformat` 即可
    第 2 条附言  ·  344 天前
    抱歉,验证结果的时候看花眼了。问题并没有解决!!!

    `--enable-libavformat` 已过时!!!
    第 3 条附言  ·  343 天前

    找个一个还满意的办法:

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