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

大家有什么好的视频压缩库

  •  
  •   honglei92 · 2020-06-15 09:54:32 +08:00 · 12190 次点击
    这是一个创建于 1653 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位壮士,求推荐一波

    38 条回复    2020-07-09 21:59:31 +08:00
    lancelock
        1
    lancelock  
       2020-06-15 10:06:15 +08:00
    ffmpeg
    bitdepth
        2
    bitdepth  
       2020-06-15 10:10:37 +08:00 via iPad
    x264, x265
    ffmpeg 只是一個 wrapper 附贈慘痛 buffer mechanism
    需要 hardware acceleration 請洽 Gstreamer
    diliburong
        3
    diliburong  
       2020-06-15 10:26:00 +08:00
    ffmpeg
    honglei92
        4
    honglei92  
    OP
       2020-06-15 10:31:55 +08:00
    @lancelock 轻量一点的有吗 即插即用那种
    wangsd
        5
    wangsd  
       2020-06-15 10:32:20 +08:00
    ffmpeg
    wangsd
        6
    wangsd  
       2020-06-15 10:32:57 +08:00
    想用带 GUI 界面的就 HandBrake
    shawndev
        7
    shawndev  
       2020-06-15 11:17:41 +08:00
    ffmpeg
    augustheart
        8
    augustheart  
       2020-06-15 11:25:35 +08:00 via Android   ❤️ 1
    我是来看有什么非 ffmpeg 方案的。
    dimlau
        9
    dimlau  
       2020-06-15 11:42:03 +08:00
    上传到微信再下载。

    当然我只是来搞笑的,毕竟微信只支持 5 分钟以内的视频。
    honglei92
        10
    honglei92  
    OP
       2020-06-15 11:46:01 +08:00
    @dimlau 那微信的压缩技术是什么
    rocbomb
        11
    rocbomb  
       2020-06-15 12:12:33 +08:00
    最近用 ffmpeg 非常多
    真的非常好用,转码,加水印,拼接
    otakustay
        12
    otakustay  
       2020-06-15 13:37:38 +08:00
    @honglei92 基本可以肯定微信也是 ffmpeg
    coderluan
        13
    coderluan  
       2020-06-15 15:28:37 +08:00
    命令行就 ffmpeg 一个, 当然你单独下个 x265 也行, 反正一套代码.

    带 gui 的话, 可以考虑 HandBrake 和 AnyVideoConverter, 各有优劣.
    zhangsimon
        14
    zhangsimon  
       2020-06-15 15:29:52 +08:00
    ffmpeg 这么强大,为啥没有人开发个 GUI 界面版的啊 😭
    systemcall
        15
    systemcall  
       2020-06-15 15:43:39 +08:00 via Android
    @zhangsimon 太多了,开源软件都是拿来骗经费骗补贴的好东西
    augustheart
        17
    augustheart  
       2020-06-15 16:12:58 +08:00 via Android
    @zhangsimon 如果从主贴需求出发的话,库和 gui 本来就不是能并列存在的东西。
    如果是界面版 ffmpeg,看看 ffmpeg 的文档,这该是什么样的神仙界面才能把它的命令都实现啊。如果只是需要一个应用软件那已经有一大把了。
    zhangsimon
        18
    zhangsimon  
       2020-06-15 16:26:15 +08:00
    @augustheart 这该是什么样的神仙界面才能把它的命令都实现啊。 如果只是需要一个应用软件那已经有一大把了。
    你是说有一大把实现部分功能的软件吧?

    我倒是确实用过一些视频处理软件:但发现功能都不理想。
    比如我想要把一段很长的视频里的某一段加上水印
    大部分软件里就需要把整个视频转码,非常耗时

    就没有软件能把水印转码处理下,完然后和其他片段做无转码合并吗?

    (用过一些无转码的视频拼接软件,但需要视频片段参数完全一致,
    但我找的软件很难把转码片段的输出参数和原视频参数完全一致…)
    otakustay
        19
    otakustay  
       2020-06-15 16:30:33 +08:00
    @zhangsimon 因为视频的压缩是前后帧相关的,所以要效果优秀的话不大可能中间转一段再拼一拼就能搞定
    zhangsimon
        20
    zhangsimon  
       2020-06-15 16:34:01 +08:00
    @otakustay 对效果要求没那么高!! 想要提高效率 😭!!
    nightwitch
        21
    nightwitch  
       2020-06-15 16:44:47 +08:00
    ffmpeg 那个命令行那么多参数,GUI 要做多少个复选框和按钮。ffmepg 一点也不重,Linux 很多发行版默认带,Windows 下一个静态链接的 ffmepg, 只有几个可执行文件,直接运行就完事。
    nightwitch
        22
    nightwitch  
       2020-06-15 16:45:38 +08:00
    @nightwitch 忽略我的回答吧,我没看到安卓的标签。
    natforum
        23
    natforum  
       2020-06-15 16:46:47 +08:00
    上传到油管,各种分辨率都有给你压缩好了
    augustheart
        24
    augustheart  
       2020-06-15 16:50:31 +08:00 via Android
    @nightwitch 自信点,即使是对安卓来说 ffmpeg 也一点都不重
    chihiro2014
        25
    chihiro2014  
       2020-06-15 16:51:41 +08:00
    @wangsd GUI (小丸不香么)
    augustheart
        26
    augustheart  
       2020-06-15 16:54:30 +08:00 via Android
    @zhangsimon 是的,我手机打字,经常就会漏掉点东西 /意思。事实上,基本上不会有第二个东西能做到 ffmpeg 这么齐全的格式和功能支持了。使用了 ffmpeg 的 mencoder 除外
    zhangsimon
        27
    zhangsimon  
       2020-06-15 17:02:11 +08:00
    @nightwitch 可以复选框和 input 结合!-,-
    甚至可以保存自己常用的选项-。-
    --因为不是 coder
    用过两次 ffmpeg 的命令行
    每次都要回复复习下怎么定位文件…
    wangsd
        28
    wangsd  
       2020-06-15 17:29:32 +08:00
    @zhangsimon FFQueue
    msg7086
        29
    msg7086  
       2020-06-15 20:27:52 +08:00   ❤️ 2
    @zhangsimon #18
    世界上绝大多数的类似功能的产品都是 ffmpeg 套个壳。(少部分是独立编解码器,但是功能肯定少得多。)

    至于无转码合并,是可以的,但是要求非常高,要求关键的编码参数必须一致,否则播放的时候会让解码器崩溃。
    举个例子,如果你压的是 H.264 ,参考帧开的是 4,而原片开的是 6,那么合并以后如果 SPS/PPS 里说这片只参考了 4 帧,解码器按照 4 帧分配了内部存储结构空间,播到参考帧 6 的地方就会因为 buffer overrun 或者 missing frame 而炸掉。

    H.264 的关键参数少说十几个,H.265 的关键参数更多,任何一个参数不匹配都会炸掉解码器。

    所以你说,无转码合并难吗?

    再来说点更难的。比如电视广播常用的 Open GOP,每一段 GOP 里的帧都有或多或少参考之前一个 GOP 的内容。也就是说,整个视频流可能从凌晨电视台开机开始,到晚上停机休息为止,这十几个小时的视频都没有办法完美切割或者合并。
    从开机的第一个 IDR 开始,后面的所有内容就像这样:I B P B P I B P B P 。如果是 Close GOP,那么第 1 帧和第 6 帧都是 IDR 帧,从 GOP 边界切开就能完美分割。如果是 Open GOP,那么这两帧都是 i 帧,意味着第 2 帧和第 7 帧都可以跨 GOP 参考,也就是说第 7 帧上的画面可以从第 5 帧甚至第 3 帧取来做参考。如果你把第一个 GOP 切掉,那么第 7 帧直接就成了无法播放的坏帧了。所以像日本的电视台节目,切开的位置头几帧是肯定要坏掉的。
    如果是 H.265 的 4K 节目的话,也有类似的 IDR/CRA/RASL/RADL/TRAIL 帧的区别。
    这些基础知识就够咱们研究好久了……

    这些东西不是你希望他支持他就能做出来的。有些功能,确实不太现实。
    xmumiffy
        30
    xmumiffy  
       2020-06-15 22:46:00 +08:00
    android 上的库 要么 ffmpeg 要么系统的 medioCodec 要么 intel 已经不维护的 media for mobile
    black11black
        31
    black11black  
       2020-06-15 22:48:46 +08:00
    @zhangsimon 因为没有必要,简单的拼接、转码等操作市场上已经有很多竞品了,稍微复杂一些的操作,比如要自己写滤镜之类的,靠 GUI 搞是注定失败的,真用起来还是命令行顺手
    baoyexi
        32
    baoyexi  
       2020-06-16 09:22:29 +08:00
    @msg7086 需要加水印的部分转码作为一个单独的 sequence 就行。解码器发现 sequence header 参数变化可以切新的解码。open gop 也可以判断出来,简单的类似 265 的时候就定义了 bla,然后丢掉 rasl 的包就行。我觉得这个问题在于编码参数不一样会让人看视频有割裂感,不如直接整体编码了了。如果不是直播这种的话,个人感觉视频主观质量占的比重比效率会稍微高一点儿。
    baoyexi
        33
    baoyexi  
       2020-06-16 09:30:59 +08:00
    @bitdepth ffmpeg 的 buffer 确实让人头痛。
    msg7086
        34
    msg7086  
       2020-06-16 10:06:53 +08:00
    @baoyexi 不是所有的解码器都能适应新的 SPS 的。丢掉 RASL 也不是各大解码器都能做好的。
    就连以前最简单的两个分开编码的 h.264 流合在一起出 mp4 都有解码器会炸。
    zhangsimon
        35
    zhangsimon  
       2020-06-16 11:10:45 +08:00
    @baoyexi 喵喵喵,无转码分割、合并的软件我用过好几个,感觉还可以;就是把某一段贴水印转码成原始参数完全一致的视频很难吗 😭
    fansangg
        36
    fansangg  
       2020-06-19 00:00:43 +08:00
    当然是 mediacodec,FFmpeg 慢
    geniusnut
        37
    geniusnut  
       2020-07-09 11:56:00 +08:00
    @bitdepth gstreamer 跟视频压缩没半毛钱关系,它只是个多媒体框架。同样,hardware acceleration 也不是一定要有 gstreamer 才能用。
    bitdepth
        38
    bitdepth  
       2020-07-09 21:59:31 +08:00 via iPad
    @geniusnut 你看我回答什麼好吧,ffmpeg 也不是啊
    有能力可以硬上 libva, nv sdk
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:22 · PVG 13:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.