如何用 ffmpeg 压分层可伸缩视频(SVC)啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fl2d

如何用 ffmpeg 压分层可伸缩视频(SVC)啊

  •  
  •   fl2d 2021 年 5 月 27 日 1759 次点击
    这是一个创建于 1794 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个亲戚孩子的毕设需要用到的,本打算用 h.265 ,但昨天发了个贴,没人回。于是我想那就 h.264 吧。。

    如果消耗了脑细胞,解决问题了我给您发个红包喝杯咖啡?

    想把一个 4k/60p 视频压成 H.264 SVC 。

    ·不要 B 帧

    ·时间不用伸缩,所有层都是 60p

    ·base 层极低分辨率

    ·提供多个分辨率 /清晰度的层

    ffmpeg 不太熟,而且关于 svc 的资料网上也很少,有知道怎么设 ffmpeg 参数的老兄么?

    13 条回复    2021-05-30 11:15:32 +08:00
    hello2060
        1
    hello2060  
       2021 年 5 月 27 日
    首先你要确定能用 FFMPEG 压,H.264 fmpeg 有自带的 encoder, 也有用 X264 也就是 libx264.

    最简单的,下载源码,找到那两个 encoder 的文件,看接受那些参数就行了。或者看看 x264 是否接受制定一个 svc 相关的 profile
    minami
        2
    minami  
       2021 年 5 月 27 日
    x264 不支持 svc,你需要用 openh264 。但我看了下 ffmpeg 关于 openh264 的文档,我建议你直接用 openh264,doge
    fl2d
        3
    fl2d  
    OP
       2021 年 5 月 27 日
    @hello2060 @minami
    我是在网上的只言片语里,发现似乎 x264 不支持 svc,需要用 openh264 。
    svc 资料真不多啊,说实话,openh264 的文档找了一圈都没找到。。。
    minami
        4
    minami  
       2021 年 5 月 27 日
    @fl2d 找不到是正常的,因为思科自己就没好好写文档。。。所有资料就是注释和 doxygen 文档
    fl2d
        5
    fl2d  
    OP
       2021 年 5 月 27 日
    @minami
    这就不好整了♂
    为啥建议直接用 openh264 而不是用 ffmpeg ?
    minami
        6
    minami  
       2021 年 5 月 27 日
    @fl2d #5 因为 ffmpeg 没有封装 SVC 相关参数,源码里面( libopenh264enc.c )也是写死的,你折腾这个要改源码,还不如直接用 openh264

    源码 179 、180 行,写死了没有使用 SVC:
    param.iTemporalLayerNum = 1;
    param.iSpatialLayerNum = 1;
    fl2d
        7
    fl2d  
    OP
       2021 年 5 月 27 日
    @minami
    那就是说,openh264 可以直接命令行来编解码视频?
    完全找不到资料啊。。。你知道哪里能找到命令行操作的相关资料么?
    minami
        8
    minami  
       2021 年 5 月 27 日
    @fl2d 你去 openh264 的 github 页面,命令行操作的 demo 在 testbin 目录下,资源文件在 res 目录下。顺带一提上面说的 doxygen 文档就在 wiki 页面,里面有通过 API 调用的 demo
    fl2d
        9
    fl2d  
    OP
       2021 年 5 月 28 日
    @minami 非常感谢!! 我研究一下!!
    fl2d
        10
    fl2d  
    OP
       2021 年 5 月 28 日
    @minami
    testbin 里的例子跑通了。
    尽管是唯一能找到的工具了,但是 openh264 对 svc 的支持相当不行啊。
    比如,命令行只能解出来最高层,issue 里说用 c 倒是可以分开各层,但 spatial 层之间竟然是完全独立的。
    fl2d
        11
    fl2d  
    OP
       2021 年 5 月 29 日
    @minami
    请问你了解 svt-av1/svt-vp9 么?
    这个名字里有 svt,实际上支不支持 scalable video?
    minami
        12
    minami  
       2021 年 5 月 29 日   1
    @fl2d 据我所知 svt 的名字来源应该是 Intel 自家的 Xeon Scalable 产品线。支不支持 scalable video 是看编码器支持的标准内有没有 scalable 相关的东西。我们常说 x264 不支持 scalable video,是因为 x264 只支持 H264/AVC 标准,不支持 H264 的 Scalable Extension 即 SVC ; x265 只支持 HEVC 标准,不支持 HEVC 的 Scalable Extension 即 SHVC (顺便提一嘴,x265 也不支持 HEVC 的 Screen Content Coding Extensions 即 SCC,这个也是大痛点)。
    根据 webrtc 的文档,VP8 、VP9 、AV1 标准的非扩展部分都已经有 scalable video ( VP8 只支持时间伸缩),所以完整实现标准的编码器都应该支持。就是说你拿 libvpx 就可以编了,不信可以看 libvpx 内的 examples/vp9_spatial_svc_encoder.c 。svt-vp9 你也可以去看看,大概率也是有的
    不过恕我直言,SVC 这玩意之所以一直不温不火,确实是因为实际应用中没有什么用。。。。
    fl2d
        13
    fl2d  
    OP
       2021 年 5 月 30 日
    @minami
    多谢!原来如此,是重名 查 svt 系列编解码器资料时,我也注意到 scalable 这个词常常被用在 cpu 上,我还纳闷儿呢。。
    是想做增量传视频。我以前听过 svc 的概念,觉得直接把 svc 跑通了就可以把故事说成增量传输了,所以让亲戚孩子选了这个题目。然而万万没想到,找不到工具♂
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     930 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 19:5 PVG 03:15 LAX 12:15 JFK 15:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86