视频硬件编码器相关讨论(复制自公共聊天室)

回复列表(86|隐藏机器人聊天)
  • @Ta / 2022-08-30 / /

    @无名啊,至于B站的压制,我觉得要么是CPU集群,要么是GPU集群,也没有其他什么好选择了。电视直播才会用很贵的实时流式编码器。

  • @Ta / 2022-08-30 / /

    @老虎会游泳,我觉得应该会有专用硬件编码方案才对。CPU 转,老慢老贵了

    以前听说过 FPGA 啥的,但没具体了解

  • @Ta / 2022-08-30 / /

    @无名啊,所以是什么需求让你如此关心编码器的视频质量呢?你的存储很紧缺吗,还是说你直接面向最终用户进行交付?

  • @Ta / 2022-08-30 / /

    @无名啊,专用硬件编码方案可不见得比CPU和GPU便宜,毕竟产量比CPU和GPU小多了。规模效应带来的成本下降是非常可观的。

  • @Ta / 2022-08-30 / /

    @老虎会游泳,以前转录像视频时捣鼓过一点。毕竟太大了,想质量损失不大情况下,尽量压小一点儿

  • @Ta / 2022-08-30 / /

    @老虎会游泳@tasy5kg 先开始说硬件编码的,我只是扯远了一点。。

  • @Ta / 2022-08-30 / /

    @无名啊,那我只能说,在我非常有限的几次HEVC_NVENC压制经历中,它的输出让我满意。至于其他方案,我没有用过,所以无法评论。

  • @Ta / 2022-08-30 / /

    @老虎会游泳,嗯,码率给够,一般都没啥问题的

  • @Ta / 2023-07-31 / /

    Android 手机的多媒体编解码器列表

    通过此 Kotlin 代码获取:

    MediaCodecList(MediaCodecList.ALL_CODECS).codecInfos.filter { !it.isAlias }.joinToString("\n") {
        "| " + listOf(it.name, it.isHardwareAccelerated, it.supportedTypes.joinToString(", ")).joinToString(" | ") + " |"
    }
    

    Redmi K60 Pro (Snapdragon 8G2)
    | Name | Hwaccel | Supported Types | |---------------------------------|---------|---------------------------------------| | c2.qti.alac.sw.decoder | true | audio/alac | | c2.qti.ape.sw.decoder | true | audio/x-ape | | c2.qti.dsd.sw.decoder | true | audio/dsd | | c2.qti.amrwbplus.hw.decoder | true | audio/amr-wb-plus | | c2.qti.amrwb+.hw.decoder | true | audio/amr-wb+ | | c2.qti.wma.hw.decoder | true | audio/x-ms-wma | | c2.qti.alac.hw.decoder | true | audio/alac | | c2.qti.ape.hw.decoder | true | audio/x-ape | | c2.dolby.ac4.decoder | false | audio/ac4 | | c2.dolby.eac3.decoder | false | audio/ac3, audio/eac3, audio/eac3-joc | | c2.android.aac.decoder | false | audio/mp4a-latm | | c2.android.aac.encoder | false | audio/mp4a-latm | | c2.android.amrnb.decoder | false | audio/3gpp | | c2.android.amrnb.encoder | false | audio/3gpp | | c2.android.amrwb.decoder | false | audio/amr-wb | | c2.android.amrwb.encoder | false | audio/amr-wb | | c2.android.flac.decoder | false | audio/flac | | c2.android.flac.encoder | false | audio/flac | | c2.android.g711.alaw.decoder | false | audio/g711-alaw | | c2.android.g711.mlaw.decoder | false | audio/g711-mlaw | | c2.android.mp3.decoder | false | audio/mpeg | | c2.android.opus.decoder | false | audio/opus | | c2.android.opus.encoder | false | audio/opus | | c2.android.raw.decoder | false | audio/raw | | c2.android.vorbis.decoder | false | audio/vorbis | | c2.qti.avc.decoder | true | video/avc | | c2.qti.avc.decoder.low_latency | true | video/avc | | c2.qti.avc.decoder.secure | true | video/avc | | c2.qti.hevc.decoder | true | video/hevc | | c2.qti.hevc.decoder.low_latency | true | video/hevc | | c2.qti.hevc.decoder.secure | true | video/hevc | | c2.qti.vp9.decoder | true | video/x-vnd.on2.vp9 | | c2.qti.vp9.decoder.low_latency | true | video/x-vnd.on2.vp9 | | c2.qti.vp9.decoder.secure | true | video/x-vnd.on2.vp9 | | c2.qti.av1.decoder | true | video/av01 | | c2.qti.av1.decoder.low_latency | true | video/av01 | | c2.qti.av1.decoder.secure | true | video/av01 | | c2.qti.avc.encoder | true | video/avc | | c2.qti.hevc.encoder | true | video/hevc | | c2.qti.hevc.encoder.cq | true | video/hevc | | c2.qti.heic.encoder | true | image/vnd.android.heic | | c2.qti.flac.sw.decoder | true | audio/flac | | c2.qti.aac.hw.decoder | true | audio/mp4a-latm | | c2.qti.aac.hw.encoder | true | audio/mp4a-latm | | c2.qti.amrnb.hw.encoder | true | audio/3gpp | | c2.qti.amrwb.hw.encoder | true | audio/amr-wb | | c2.dolby.decoder.hevc | true | video/dolby-vision | | c2.dolby.decoder.hevc.secure | true | video/dolby-vision | | c2.android.av1.decoder | false | video/av01 | | c2.android.avc.decoder | false | video/avc | | c2.android.avc.encoder | false | video/avc | | c2.android.h263.decoder | false | video/3gpp | | c2.android.h263.encoder | false | video/3gpp | | c2.android.hevc.decoder | false | video/hevc | | c2.android.hevc.encoder | false | video/hevc | | c2.android.mpeg4.decoder | false | video/mp4v-es | | c2.android.mpeg4.encoder | false | video/mp4v-es | | c2.android.vp8.decoder | false | video/x-vnd.on2.vp8 | | c2.android.vp8.encoder | false | video/x-vnd.on2.vp8 | | c2.android.vp9.decoder | false | video/x-vnd.on2.vp9 | | c2.android.vp9.encoder | false | video/x-vnd.on2.vp9 |

    Redmi K40 (Snapdragon 870)
    | Name | Hwaccel | Supported Types | |-------------------------------------|---------|------------------------| | OMX.dolby.ac3.decoder | true | audio/ac3 | | OMX.dolby.ac4.decoder | true | audio/ac4 | | OMX.dolby.eac3.decoder | true | audio/eac3 | | OMX.dolby.eac3-joc.decoder | true | audio/eac3-joc | | OMX.qcom.video.encoder.heic | true | image/vnd.android.heic | | OMX.qcom.video.decoder.avc | true | video/avc | | OMX.qcom.video.decoder.avc.secure | true | video/avc | | OMX.qti.video.decoder.h263sw | true | video/3gpp | | OMX.qcom.video.decoder.hevc | true | video/hevc | | OMX.qcom.video.decoder.hevc.secure | true | video/hevc | | OMX.qcom.video.decoder.mpeg2 | true | video/mpeg2 | | OMX.qcom.video.decoder.mpeg2.secure | true | video/mpeg2 | | OMX.qti.video.decoder.mpeg4sw | true | video/mp4v-es | | OMX.qcom.video.decoder.vp8 | true | video/x-vnd.on2.vp8 | | OMX.qcom.video.decoder.vp9 | true | video/x-vnd.on2.vp9 | | OMX.qcom.video.decoder.vp9.secure | true | video/x-vnd.on2.vp9 | | OMX.qcom.video.encoder.avc | true | video/avc | | OMX.qcom.video.encoder.h263sw | true | video/3gpp | | OMX.qcom.video.encoder.hevc | true | video/hevc | | OMX.qcom.video.encoder.hevc.cq | true | video/hevc | | OMX.qcom.video.encoder.vp8 | true | video/x-vnd.on2.vp8 | | c2.android.aac.decoder | false | audio/mp4a-latm | | c2.android.aac.encoder | false | audio/mp4a-latm | | c2.android.amrnb.decoder | false | audio/3gpp | | c2.android.amrnb.encoder | false | audio/3gpp | | c2.android.amrwb.decoder | false | audio/amr-wb | | c2.android.amrwb.encoder | false | audio/amr-wb | | c2.android.flac.decoder | false | audio/flac | | c2.android.flac.encoder | false | audio/flac | | c2.android.g711.alaw.decoder | false | audio/g711-alaw | | c2.android.g711.mlaw.decoder | false | audio/g711-mlaw | | c2.android.mp3.decoder | false | audio/mpeg | | c2.android.opus.decoder | false | audio/opus | | c2.android.opus.encoder | false | audio/opus | | c2.android.raw.decoder | false | audio/raw | | c2.android.vorbis.decoder | false | audio/vorbis | | OMX.google.gsm.decoder | false | audio/gsm | | c2.android.av1.decoder | false | video/av01 | | c2.android.avc.decoder | false | video/avc | | c2.android.avc.encoder | false | video/avc | | c2.android.h263.decoder | false | video/3gpp | | c2.android.h263.encoder | false | video/3gpp | | c2.android.hevc.decoder | false | video/hevc | | c2.android.hevc.encoder | false | video/hevc | | c2.android.mpeg4.decoder | false | video/mp4v-es | | c2.android.mpeg4.encoder | false | video/mp4v-es | | c2.android.vp8.decoder | false | video/x-vnd.on2.vp8 | | c2.android.vp8.encoder | false | video/x-vnd.on2.vp8 | | c2.android.vp9.decoder | false | video/x-vnd.on2.vp9 | | c2.android.vp9.encoder | false | video/x-vnd.on2.vp9 | | c2.qti.avc.decoder | true | video/avc | | c2.qti.avc.encoder | true | video/avc |

    Redmi Note 7 (Snapdragon 660)
    | Name | Hwaccel | Supported Types | |-------------------------------------|---------|---------------------| | OMX.qcom.video.decoder.avc | true | video/avc | | OMX.qcom.video.decoder.avc.secure | true | video/avc | | OMX.qcom.video.decoder.h263 | true | video/3gpp | | OMX.qcom.video.decoder.hevc | true | video/hevc | | OMX.qcom.video.decoder.hevc.secure | true | video/hevc | | OMX.qcom.video.decoder.mpeg2 | true | video/mpeg2 | | OMX.qcom.video.decoder.mpeg2.secure | true | video/mpeg2 | | OMX.qcom.video.decoder.mpeg4 | true | video/mp4v-es | | OMX.qcom.video.decoder.vp8 | true | video/x-vnd.on2.vp8 | | OMX.qcom.video.decoder.vp9 | true | video/x-vnd.on2.vp9 | | OMX.qcom.video.decoder.vp9.secure | true | video/x-vnd.on2.vp9 | | OMX.qcom.video.encoder.avc | true | video/avc | | OMX.qcom.video.encoder.h263 | true | video/3gpp | | OMX.qcom.video.encoder.hevc | true | video/hevc | | OMX.qcom.video.encoder.mpeg4 | true | video/mp4v-es | | OMX.qcom.video.encoder.vp8 | true | video/x-vnd.on2.vp8 | | OMX.google.aac.decoder | false | audio/mp4a-latm | | OMX.google.amrnb.decoder | false | audio/3gpp | | OMX.google.amrwb.decoder | false | audio/amr-wb | | OMX.google.flac.decoder | false | audio/flac | | OMX.google.g711.alaw.decoder | false | audio/g711-alaw | | OMX.google.g711.mlaw.decoder | false | audio/g711-mlaw | | OMX.google.gsm.decoder | false | audio/gsm | | OMX.google.mp3.decoder | false | audio/mpeg | | OMX.google.raw.decoder | false | audio/raw | | OMX.google.vorbis.decoder | false | audio/vorbis | | OMX.google.aac.encoder | false | audio/mp4a-latm | | OMX.google.amrnb.encoder | false | audio/3gpp | | OMX.google.amrwb.encoder | false | audio/amr-wb | | OMX.google.flac.encoder | false | audio/flac | | c2.android.aac.decoder | false | audio/mp4a-latm | | c2.android.aac.encoder | false | audio/mp4a-latm | | c2.android.amrnb.decoder | false | audio/3gpp | | c2.android.amrnb.encoder | false | audio/3gpp | | c2.android.amrwb.decoder | false | audio/amr-wb | | c2.android.amrwb.encoder | false | audio/amr-wb | | c2.android.flac.decoder | false | audio/flac | | c2.android.flac.encoder | false | audio/flac | | c2.android.g711.alaw.decoder | false | audio/g711-alaw | | c2.android.g711.mlaw.decoder | false | audio/g711-mlaw | | c2.android.mp3.decoder | false | audio/mpeg | | c2.android.opus.decoder | false | audio/opus | | c2.android.opus.encoder | false | audio/opus | | c2.android.raw.decoder | false | audio/raw | | c2.android.vorbis.decoder | false | audio/vorbis | | c2.android.av1.decoder | false | video/av01 | | c2.android.avc.decoder | false | video/avc | | c2.android.avc.encoder | false | video/avc | | c2.android.h263.decoder | false | video/3gpp | | c2.android.h263.encoder | false | video/3gpp | | c2.android.hevc.decoder | false | video/hevc | | c2.android.hevc.encoder | false | video/hevc | | c2.android.mpeg4.decoder | false | video/mp4v-es | | c2.android.mpeg4.encoder | false | video/mp4v-es | | c2.android.vp8.decoder | false | video/x-vnd.on2.vp8 | | c2.android.vp8.encoder | false | video/x-vnd.on2.vp8 | | c2.android.vp9.decoder | false | video/x-vnd.on2.vp9 | | c2.android.vp9.encoder | false | video/x-vnd.on2.vp9 |

    Redmi 9 (Helio G80)
    | Name | Hwaccel | Supported Types | |----------------------------------|---------|-----------------------| | OMX.MTK.AUDIO.DECODER.MP3 | true | audio/mpeg | | c2.android.aac.decoder | false | audio/mp4a-latm | | c2.android.aac.encoder | false | audio/mp4a-latm | | c2.android.amrnb.decoder | false | audio/3gpp | | c2.android.amrnb.encoder | false | audio/3gpp | | c2.android.amrwb.decoder | false | audio/amr-wb | | c2.android.amrwb.encoder | false | audio/amr-wb | | c2.android.flac.decoder | false | audio/flac | | c2.android.flac.encoder | false | audio/flac | | c2.android.g711.alaw.decoder | false | audio/g711-alaw | | c2.android.g711.mlaw.decoder | false | audio/g711-mlaw | | c2.android.mp3.decoder | false | audio/mpeg | | c2.android.opus.decoder | false | audio/opus | | c2.android.opus.encoder | false | audio/opus | | c2.android.raw.decoder | false | audio/raw | | c2.android.vorbis.decoder | false | audio/vorbis | | OMX.MTK.AUDIO.DECODER.ADPCM.MS | true | audio/x-adpcm-ms | | OMX.MTK.AUDIO.DECODER.ADPCM.DVI | true | audio/x-adpcm-dvi-ima | | OMX.MTK.AUDIO.DECODER.ALAC | true | audio/alac | | OMX.MTK.AUDIO.DECODER.APE | true | audio/ape | | OMX.MTK.AUDIO.DECODER.GSM | true | audio/gsm | | OMX.MTK.VIDEO.DECODER.AVC | true | video/avc | | OMX.MTK.VIDEO.DECODER.AVC.secure | true | video/avc | | OMX.MTK.VIDEO.DECODER.DIVX | true | video/divx | | OMX.MTK.VIDEO.DECODER.DIVX3 | true | video/divx3 | | OMX.MTK.VIDEO.DECODER.H263 | true | video/3gpp | | OMX.MTK.VIDEO.DECODER.HEVC | true | video/hevc | | OMX.MTK.VIDEO.DECODER.MPEG2 | true | video/mpeg2 | | OMX.MTK.VIDEO.DECODER.MPEG4 | true | video/mp4v-es | | OMX.MTK.VIDEO.DECODER.VPX | true | video/x-vnd.on2.vp8 | | OMX.MTK.VIDEO.DECODER.VP9 | true | video/x-vnd.on2.vp9 | | OMX.MTK.VIDEO.DECODER.VC1 | true | video/x-ms-wmv | | OMX.MTK.VIDEO.DECODER.XVID | true | video/xvid | | OMX.MTK.VIDEO.ENCODER.AVC | true | video/avc | | OMX.MTK.VIDEO.ENCODER.H263 | true | video/3gpp | | OMX.MTK.VIDEO.ENCODER.HEVC | true | video/hevc | | OMX.MTK.VIDEO.ENCODER.MPEG4 | true | video/mp4v-es | | c2.android.av1.decoder | false | video/av01 | | c2.android.avc.decoder | false | video/avc | | c2.android.avc.encoder | false | video/avc | | c2.android.h263.decoder | false | video/3gpp | | c2.android.h263.encoder | false | video/3gpp | | c2.android.hevc.decoder | false | video/hevc | | c2.android.mpeg4.decoder | false | video/mp4v-es | | c2.android.mpeg4.encoder | false | video/mp4v-es | | c2.android.vp8.decoder | false | video/x-vnd.on2.vp8 | | c2.android.vp8.encoder | false | video/x-vnd.on2.vp8 | | c2.android.vp9.decoder | false | video/x-vnd.on2.vp9 |
  • @Ta / 2022-08-30 / /

    @老虎会游泳,QSVEnc 的作者,在这个月倒是测试了下 Intel Arc A380(我还没细看)

  • @Ta / 2022-08-30 / /

    @tasy5kg,能在 Termux 上通过 ffmpeg 使用这些硬件编码器吗?我想试试效果

  • @Ta / 2022-08-30 / /

    @无名啊,FFmpeg 不支持 Android 硬件编码(解码似乎可以)

  • @Ta / 2022-08-30 / /

    @tasy5kg,除了自己写安卓APP外,还有啥方法可以使用这些硬件编码嘛?

    有没有人编好了APP,能直接使用啥的?

  • @Ta / 2022-08-30 / /

    @无名啊,Android 平台的视频处理工具几乎都是调用硬件编码器吧。毕竟软件编码器太慢太耗电。

    MIUI 系统相册内置的“视频压缩”功能可以使用硬件 H.264/H.265 编码。

    Screenshot_2022-08-30-20-41-00-970_com.miui.gallery-edit.jpg(79.69 KB)

  • @Ta / 2022-08-30 / /

    @tasy5kg,看起来,调不了参数。。

    还是希望起码有个命令行接口,可以方便自定义参数尝试

  • @Ta / 2022-08-30 / /

    @tasy5kg,我搜到一份高通网站上的HEVC视频编码用户手册.pdf

    手册中有提到个QcHevcEncode命令行工具,以及重新编译ffmpeg以启用Qualcomm HEVC encoding的方法

  • @Ta / 2022-08-30 / /

    @tasy5kg,要不开个帖子说吧,这里不方便修改回复,以后聊天室也容易被清空,这样讨论就全没了

  • @Ta / 2022-08-30 / /

    @老虎会游泳,管理员能不能把这个聊天室里的 118 ~ 153 楼,移至一个新帖子中呢?

    这些都是以视频硬件编码器为主题的一些讨论,适合圈至一个帖子中,免得聊天室被清空就没了

  • @Ta / 2022-08-30 / /

    @老虎会游泳,也就是,剪切一部分回复,至另一个帖子中?

添加新回复
回复需要登录