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

2020-06-15 09:54:32 +08:00
 honglei92

各位壮士,求推荐一波

7966 次点击
所在节点    Android
38 条回复
nightwitch
2020-06-15 16:44:47 +08:00
ffmpeg 那个命令行那么多参数,GUI 要做多少个复选框和按钮。ffmepg 一点也不重,Linux 很多发行版默认带,Windows 下一个静态链接的 ffmepg, 只有几个可执行文件,直接运行就完事。
nightwitch
2020-06-15 16:45:38 +08:00
@nightwitch 忽略我的回答吧,我没看到安卓的标签。
natforum
2020-06-15 16:46:47 +08:00
上传到油管,各种分辨率都有给你压缩好了
augustheart
2020-06-15 16:50:31 +08:00
@nightwitch 自信点,即使是对安卓来说 ffmpeg 也一点都不重
chihiro2014
2020-06-15 16:51:41 +08:00
@wangsd GUI (小丸不香么)
augustheart
2020-06-15 16:54:30 +08:00
@zhangsimon 是的,我手机打字,经常就会漏掉点东西 /意思。事实上,基本上不会有第二个东西能做到 ffmpeg 这么齐全的格式和功能支持了。使用了 ffmpeg 的 mencoder 除外
zhangsimon
2020-06-15 17:02:11 +08:00
@nightwitch 可以复选框和 input 结合!-,-
甚至可以保存自己常用的选项-。-
--因为不是 coder
用过两次 ffmpeg 的命令行
每次都要回复复习下怎么定位文件…
wangsd
2020-06-15 17:29:32 +08:00
@zhangsimon FFQueue
msg7086
2020-06-15 20:27:52 +08:00
@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
2020-06-15 22:46:00 +08:00
android 上的库 要么 ffmpeg 要么系统的 medioCodec 要么 intel 已经不维护的 media for mobile
black11black
2020-06-15 22:48:46 +08:00
@zhangsimon 因为没有必要,简单的拼接、转码等操作市场上已经有很多竞品了,稍微复杂一些的操作,比如要自己写滤镜之类的,靠 GUI 搞是注定失败的,真用起来还是命令行顺手
baoyexi
2020-06-16 09:22:29 +08:00
@msg7086 需要加水印的部分转码作为一个单独的 sequence 就行。解码器发现 sequence header 参数变化可以切新的解码。open gop 也可以判断出来,简单的类似 265 的时候就定义了 bla,然后丢掉 rasl 的包就行。我觉得这个问题在于编码参数不一样会让人看视频有割裂感,不如直接整体编码了了。如果不是直播这种的话,个人感觉视频主观质量占的比重比效率会稍微高一点儿。
baoyexi
2020-06-16 09:30:59 +08:00
@bitdepth ffmpeg 的 buffer 确实让人头痛。
msg7086
2020-06-16 10:06:53 +08:00
@baoyexi 不是所有的解码器都能适应新的 SPS 的。丢掉 RASL 也不是各大解码器都能做好的。
就连以前最简单的两个分开编码的 h.264 流合在一起出 mp4 都有解码器会炸。
zhangsimon
2020-06-16 11:10:45 +08:00
@baoyexi 喵喵喵,无转码分割、合并的软件我用过好几个,感觉还可以;就是把某一段贴水印转码成原始参数完全一致的视频很难吗 😭
fansangg
2020-06-19 00:00:43 +08:00
当然是 mediacodec,FFmpeg 慢
geniusnut
2020-07-09 11:56:00 +08:00
@bitdepth gstreamer 跟视频压缩没半毛钱关系,它只是个多媒体框架。同样,hardware acceleration 也不是一定要有 gstreamer 才能用。
bitdepth
2020-07-09 21:59:31 +08:00
@geniusnut 你看我回答什麼好吧,ffmpeg 也不是啊
有能力可以硬上 libva, nv sdk

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX