安卓摄像头录制 60fps 并使用 MediaCodec 编码成 H.265 的视频 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GGMM
V2EX    Android

安卓摄像头录制 60fps 并使用 MediaCodec 编码成 H.265 的视频

  •  
  •   GGMM 2021-08-17 21:03:13 +08:00 12724 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题所示,这是我目前的需求。我目前实现到的程度:使用安卓 Camera2 API 可以实现OnImageAvailable回调函数的 60fps 的输出(即 16.6ms ),但是当我使用 MediaCodec 进行 H.265 视频编码时,编码的速度只有大约 50fps,平均 20ms。使用 H.265 是因为博士师兄是想要用 H.265 来做,所以必须用 H.265 格式编码。

    我尝试了一些解决方案,但是它们大部分都是输出 30fps,或者是预览 120fps,我想要的是编码 H.265 的视频是 60fps 。我认为我这里的瓶颈主要出在编码速度上。大致的流程是:OnImageAvailable得到 YUV 数组->转换为 NV12 的格式并送入缓冲池->编码线程从缓冲池中读取 NV12 的 byte 数组并进行编码。

    我上面可能说得有点含糊,主要是想问一下大家有没有试过使用MediaCodec进行硬编码,以及相应的编码速度大概是多少。

    11 条回复    2021-08-23 03:43:12 +08:00
    300
        1
    300  
       2021-08-17 21:33:05 +08:00 via Android
    不是很懂,是通用需求吗
    有些手机系统相机可以设置 hevc 编码
    JayFang1993
        2
    JayFang1993  
       2021-08-17 21:43:14 +08:00
    插帧
    felixlong
        3
    felixlong  
       2021-08-17 22:48:05 +08:00
    使用 MediaCodec.createInputSurface, 不要用软件做 YUV 的转换, 软件肯定达不到 60FPS.
    rpw
        4
    rpw  
       2021-08-17 23:50:12 +08:00
    @GGMM 三楼正解,直接用 MediaCodec 编码就可以了,不需要做软件转换。想想,现在手机上录制高帧率视频基本都是标配了
    rpw
        5
    rpw  
       2021-08-17 23:57:58 +08:00
    mxT52CRuqR6o5
        6
    mxT52CRuqR6o5  
       2021-08-18 00:22:46 +08:00 via Android
    这种都是借助硬件编码能力的,你要是用 cpu 编码就手机那种性能肯定实时不了,有可能就是硬件达不到,不知道你们用的什么手机
    z42514
        7
    z42514  
       2021-08-18 09:23:26 +08:00
    关注一下,最近也在折腾类似的需求,打算用 camerax 进行实现
    largek
        8
    largek  
       2021-08-18 13:59:21 +08:00
    有没有尝试过降低分辨率和帧率?
    largek
        9
    largek  
       2021-08-18 13:59:41 +08:00
    说错:分辨率和码率
    GGMM
        10
    GGMM  
    OP
       2021-08-19 09:24:40 +08:00
    @felixlong 谢谢,我用的是谷歌 cpp 写的 libyuv 转换的 YUV 格式,这部分花了 8ms,对于 60fps 还是慢了点。
    @rpw 谢谢,我今天尝试一下(因为昨天赶着回家)
    @mxT52CRuqR6o5 我在自己的荣耀 v30 pro 上测试的,实验室里还有个小米 11pro 我还没测。
    @largek 我之前把分辨率降低到了 720P,但是帧率还下降了 2fps 左右。
    bitdepth
        11
    bitdepth  
       2021-08-23 03:43:12 +08:00 via iPad
    能用硬加速量加速,能 DMA 量 DMA
    不用想 cpu 效能更好,硬不行就更好的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 09:45 PVG 17:45 LAX 01:45 JFK 04:45
    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