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

早就听说过 ffmpeg,但是一直不知道有多牛

  •  
  •   airchaoz · 1 天前 · 8807 次点击

    我对 ffmpeg 的印象就是一个开源音视频编解码程序,对其影响力认识较少。能给我这个门外汉讲讲到底有多牛吗

    59 条回复    2025-05-15 09:58:17 +08:00
    rrfeng
        1
    rrfeng  
       1 天前 via Android   ❤️ 2
    你每天看到的视频,不管什么渠道,100%都经过 ffmpeg 处理。
    w88975
        2
    w88975  
       1 天前
    还有一个更牛逼的 就是 openssl
    mumbler
        3
    mumbler  
       1 天前
    感觉是在骗铜币啊
    JensenQian
        4
    JensenQian  
       1 天前   ❤️ 6
    你了解的话
    他作者更佳牛逼
    FFmpeg 、QEMU 都是他搞的
    还有一堆牛逼的东西
    weiwenhao
        5
    weiwenhao  
       1 天前
    还有 tcc 编译器,代码极其简洁。不过可读性就不太好😄
    w568w
        6
    w568w  
       1 天前   ❤️ 10
    几乎所有现代音视频处理的基石。你用网页、用电脑、用手机看任何来源的视频,基本都无法避开 ffmpeg 。

    ffmpeg 对闭源引用相当容忍了,但依然有 99% 的商业巨头甚至不愿意高抬贵手在他们的软件里留下一行致谢给 ffmpeg ,以至于会默默无闻到有人像楼主一样来发帖问,这就是现实。

    ---

    一些轶闻:

    1. ffmpeg 曾经维护了一个「开源耻辱柱」,用来记录所有那些无偿使用 ffmpeg 且无视开源协议的商业软件。后来这个列表实在太长且难以维护,于是就弃置了。

    2. 你发的这幅图应该是修改过的,原图是 xkcd 的漫画,说的是另一个软件:image magick 。如果你没听说过它:它是几乎所有具备图像处理功能软件的基石。
    GiveMeABigName
        7
    GiveMeABigName  
       1 天前 via Android
    @JensenQian 这个 qemu 就有点牛了,
    airchaoz
        8
    airchaoz  
    OP
       1 天前
    @mumbler 非也,只是想多涨点知识方便以后吹牛逼
    maocat
        9
    maocat  
       1 天前 via Android   ❤️ 1
    上次看见这张图是在这里,右边的腿更细
    https://github.com/etcd-io/etcd
    tuduweb
        10
    tuduweb  
       1 天前
    @JensenQian 神马?这都是一个人搞的,太强了…
    slack
        11
    slack  
       1 天前 via Android
    @tuduweb 当然不是一个人搞了,当年还分裂出了 libav 这个项目,有兴趣可以去了解一下。
    airchaoz
        12
    airchaoz  
    OP
       1 天前
    @w568w image magick 偶尔会用,convert 命令,也是一个非常好用的工具
    skiy
        13
    skiy  
       1 天前
    格式工厂什么的,其实就是加了 GUI ,并一系列的命令打包,并调用 ffmpeg 处理的。
    iClass
        14
    iClass  
       1 天前 via Android
    历史上这个项目是因某位成员牺牲了自己的生命而享誉世界
    james122333
        15
    james122333  
       1 天前 via Android
    名开源项目 影响力大
    可以转格式 可以播放影片 可以桌面截图 可以桌面录製 更重要的是接受 io 与 imagemagick 同样性质
    shell 脚本/终端党友好命令行工具之一
    qemu 都是无图型可以直接运行在命令行
    tcc 有-run 参数 可以直接运行原始码 都是命令行友好
    可以做很多事情
    openssl 已经被我排除出去了 因为它拿掉了交户模式
    rekulas
        16
    rekulas  
       1 天前
    作者在程序界的级别就如通过爱因斯坦在物理学的级别
    frayesshi1
        17
    frayesshi1  
       1 天前
    个人觉得最牛的是居然默认支持 nVidia 显卡的硬解码
    aliipay
        18
    aliipay  
       1 天前
    @rrfeng 还真不一定,我之前做的机顶盒播放器就是自己写的 demux 。(如果你说包含片源的全流程那就当我没说)
    hronro
        19
    hronro  
       1 天前   ❤️ 1
    @frayesshi1 ffmpeg 这种东西都差不多成行业标准了,他自己不支持 NV 都会去给他贡献 PR 的。
    Oktfolio
        20
    Oktfolio  
       1 天前   ❤️ 1
    格式工厂、QQ 影音、暴风影音、Potplayer 都在耻辱柱上
    realpg
        21
    realpg  
       1 天前   ❤️ 1
    @aliipay #18
    你这个项目就是 0.9999999999999999 无限循环与 1 的差值 [狗头]
    ysc3839
        22
    ysc3839  
       1 天前   ❤️ 6
    @w568w 严格来说 Google Chrome 是违反了 FFmpeg 的协议的。
    FFmpeg 绝大部分是 GNU LGPL 协议,按照 LGPL 协议的要求,用户需要能自由替换 LGPL 部分,但是 Chrome 是静态链接 FFmpeg 的,用户并不能自由替换。
    有的人可能会说:但是 Google 开源了 Chromium 呀,自己编译 Chromium 不就能自由替换了?
    但是编译 Chromium 代码并不能得到完整版的 Chrome ,会缺失 DRM 等一些功能。你不能只开源一部分代码,就免除了自己的责任。
    事实上 Google 静态链接 FFmpeg 很可能是为了防止 DRM 被破解,因为用户替换一个修改过的 FFmpeg 就很容易截取到解密后的音视频流。
    但是即使 Google 这么违反了,FFmpeg 社区似乎也从未有人提起。

    其他基于 Chromium 的浏览器似乎没有违反协议,比如 Edge 就是动态链接 ffmpeg.dll 的。
    ysc3839
        23
    ysc3839  
       1 天前   ❤️ 2
    @hronro 事实相反,NVIDIA Tegra 系列芯片的视频编解码接口是魔改过的 V4L2 接口,FFmpeg 官方一直不支持该接口,NV 也从未主动支持 FFmpeg ,只提供了 GStreamer 的插件。这使得程序要调用 Tegra 的硬件编解码接口非常繁琐,必须对接 GStreamer 才能使用。
    msg7086
        24
    msg7086  
       1 天前   ❤️ 2
    世界上 99%的和视频播放处理相关的消费级软件都涉及到 ffmpeg 。剩下 1%大概是 gstreamer 的。
    fatigue
        25
    fatigue  
       1 天前   ❤️ 1
    Fabrice Bellard 是神
    levelworm
        26
    levelworm  
       1 天前 via Android
    @JensenQian #4
    此人的确是我辈楷模,可惜我现在对技术逐渐失去兴趣了。
    MrKrabs
        27
    MrKrabs  
       1 天前
    netflix 依赖度哪有那么高
    cpstar
        28
    cpstar  
       1 天前
    等等,我知道 ffmpeg 有多牛,但是上边全都基于黑黄 hub 么?那最牛的岂不是黑黄 hub ?!
    wen20
        29
    wen20  
       1 天前
    @aliipay 朋友,你会机顶盒播放器么? 接私活不
    aero99
        30
    aero99  
       1 天前
    每次想要临时无损转换一个视频文件,然后进入命令提示符,发觉转换命令又忘了
    如果右键弄个快捷 ffmpeg 转换菜单就好了
    shuax
        31
    shuax  
       1 天前
    https://bellard.org/
    作者不是一般的神
    joyhub2140
        32
    joyhub2140  
       1 天前
    这作者和 Linux 在计算机领域应该是同等地位。
    villivateur
        33
    villivateur  
       1 天前
    @joyhub2140 Linus 吧
    SOSdanOffical
        34
    SOSdanOffical  
       1 天前   ❤️ 1
    @w568w >但依然有 99% 的商业巨头甚至不愿意高抬贵手在他们的软件里留下一行致谢给 ffmpeg
    就算留了,99%的人连和自己利益相关的用户许可协议都懒得看,更不要说开发者名单了
    这方面打游戏的可能还强点,也主要是为了等字幕后面的彩蛋
    AlwaysPersist
        35
    AlwaysPersist  
       1 天前
    PORNHUB 是抖音/Youtube 基座?
    ratazzi
        36
    ratazzi  
       1 天前
    刚看了百科,还有 最快圆周率算法
    gogogo2000
        37
    gogogo2000  
       1 天前
    @w88975 openssl 的同类替代品还是很多的,而且 openssl 本身屎山有点严重,ffmpeg 要好太多了
    xubeiyan
        38
    xubeiyan  
       1 天前
    可惜现在 ffmpeg 仍然不支持 WebRTC 推流,主要是现在 Bellard 不咋管了,管的那帮人不是很看好 WebRTC 的发展。对比起来 OBS 就支持
    jjtang11
        39
    jjtang11  
       1 天前
    凡是吹某个东西怎么怎么牛的,最后发现牛的是人,把它交给小白也是啥都干不了
    jciba5n4y6u
        40
    jciba5n4y6u  
       1 天前
    一个法国人搞得,框架设计的挺垃圾的,二十几年前分析过他的代码。但是人家搞的早,占坑占的早,大家都往里扔东西,慢慢就快成为工业标准了。

    感觉 vlc 要优雅的多,跨平台,结构化,虽然不是一个领域,但看起来真的差别好大的。流式数据处理,和微软的 directshow 类似的思路。
    Rehtt
        41
    Rehtt  
       23 小时 57 分钟前 via Android
    @jjtang11 有没有可能这些就不是给小白用的
    wulili
        42
    wulili  
       23 小时 56 分钟前
    这个库很厉害,但不用过度神话它,说什么各种基石的完全有些过了。它只是出道很早,再加上开源,能极大程度上降低音视频编程处理的门槛,所以在行业内很流行,但并不代表音视频处理就必须得用它,各种小白软件倒是用的很多,但是像音视频处理领域内的最流行的商业软件 Final cut pro ,PR ,DaVinci ,AE 这些都没用到。
    lisxour
        43
    lisxour  
       23 小时 0 分钟前
    ffmpeg 好用是好用,但实际使用体验一堆坑,对非常固定的格式编码做处理还是挺香的,但比如对任意一个主流格式的视频嵌入字幕,看似很简单的需求,做起来各种坑
    xjzshttps
        44
    xjzshttps  
       18 小时 47 分钟前
    @w88975 现在有不少非 openssl 的 tls 实现了吧?
    至少 go 里面直接标准库就能跑 tls 。
    dododada
        45
    dododada  
       18 小时 40 分钟前
    @AlwaysPersist 是不是基座不清楚,但是在求快的路上,pornhub 基本是先驱;

    多年前有个他们技术负责人的采访,讲就是 redis 当硬盘用的,听起来就很猛,现在 redis 当硬盘用的也没怎么听说过
    vvhy
        46
    vvhy  
       18 小时 27 分钟前
    上一次看这种图是 https://github.com/harfbuzz/harfbuzz
    TimPeake
        47
    TimPeake  
       18 小时 20 分钟前
    有毒 小红书刚刷到个几乎一样的帖子(配图都是一样的),这就看到了这个。你小子发的小红书上的 ?
    yiqiao
        48
    yiqiao  
       18 小时 19 分钟前
    @dododada 「独眼怪」好像就是这么弄的
    sampeng
        49
    sampeng  
       18 小时 12 分钟前   ❤️ 1
    视频企业是要赚钱的。。如果没有 ffmpeg 这个玩意的存在。所有视频涨十倍价格跑不掉。ffmpeg 的转码是视频行业必须也绕不过去的一件事
    wyntalgeer
        50
    wyntalgeer  
       16 小时 45 分钟前
    https://scilxurkel001.github.io/archive/ffmpeg-shame/ 这里找到一份副本 ffmpeg 耻辱柱,可惜后来不更了,毕竟更了也没什么鸟用,早年的暴风,qq 播放器,KMPlayer 都在柱上。
    如果后来继续更的话,大概率现在的必剪/剪映们都逃不过。
    记得以前阿 B 上有个 up ,剪视频全程用 ffmpeg 的,ID 忘了找不到了,有缘人可以发一下
    lance07
        51
    lance07  
       15 小时 30 分钟前
    作者是个传奇
    abc8678
        52
    abc8678  
       15 小时 1 分钟前 via Android   ❤️ 1
    @aero99 我也想要一个自定义命令的工具,类似于 openwrt 的 luci-app-commands 那种,自定义一个命令列表,点击按钮就跑它,如果要一两个参数 就加个输入框 改成填空题。平时经常用 ffmpeg 和安卓 shell(老是打开 termux 输命令 很不方便)
    drymonfidelia
        53
    drymonfidelia  
       14 小时 58 分钟前 via iPhone
    @rrfeng ffmpeg 太慢了,我记得 youtube 是自己实现的转码工具,yt-dlp 下载日志里有写
    bbao
        54
    bbao  
       14 小时 17 分钟前
    @weiwenhao ffmpeg 的可读性也不能说好吧。
    frayesshi1
        55
    frayesshi1  
       10 小时 39 分钟前   ❤️ 1
    @ysc3839 #23 像 NVIDIA Jetson 这些板子硬解码很麻烦,都是使用管道去调 GStreamer
    bunnyblueair
        56
    bunnyblueair  
       2 小时 49 分钟前
    @w568w 我记得 QQ 播放器 在里面
    capric
        57
    capric  
       58 分钟前
    ffmpeg 封装 api 更底层一些; gstreamer plugin 在设计上更高层和合理一些,可以将插件动态库注册上去不用和源码一起编译; opencv 底层图形处理是 ffmpeg ,nvidia deepstream 是基于 gstreamer 的,和 ai 融合更方便。
    ryougifujino
        58
    ryougifujino  
       52 分钟前
    @joyhub2140 单论开发能力是比 Linus 强的
    A55555
        59
    A55555  
       37 分钟前
    这个好用,可以下载 youtube 视频
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 02:35 · PVG 10:35 · LAX 19:35 · JFK 22:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.