HarmonyOS 鸿蒙Next视频编码器(OH_AVCodecOnNewOutputData)输出的第一帧数据需要怎么处理?

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next视频编码器(OH_AVCodecOnNewOutputData)输出的第一帧数据需要怎么处理? 使用视频编码器进行编码时,通过buffer或者surface模式,送入第一个视频帧数据后,OH_AVCodecOnNewOutputData都会吐出两帧数据:其中第一帧数据的flags为 AVCODEC_BUFFER_FLAGS_CODEC_DATA,第二帧数据的flags为 AVCODEC_BUFFER_FLAGS_SYNC_FRAME

如果将吐出的第一帧数据(AVCODEC_BUFFER_FLAGS_CODEC_DATA的数据)也写入到mp4里,则最终生成的mp4文件在播放时只有第一帧数据黑屏,其他数据正常;如果将吐出的第一帧数据(AVCODEC_BUFFER_FLAGS_CODEC_DATA的数据)丢掉,从第二帧数据开始写入mp4里,则最终生成的mp4文件在播放时全部黑屏。

请问:需要怎么处理吐出的第一帧数据(AVCODEC_BUFFER_FLAGS_CODEC_DATA的数据)?


更多关于HarmonyOS 鸿蒙Next视频编码器(OH_AVCodecOnNewOutputData)输出的第一帧数据需要怎么处理?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

①当前仅支持传入 annexB 格式帧,不支持 AVCC 格式帧
②确保 buffer size 正确传入
③排查首帧是否未传 XPS 信息
仅关键帧(I帧): AVCODEC_BUFFER_FLAGS_SYNC_FRAME
仅配置帧(pps、sps): AVCODEC_BUFFER_FLAGS_CODEC_DATA
是配置帧又是关键帧(pps、sps + I帧) : AVCODEC_BUFFER_FLAGS_CODEC_DATA|AVCODEC_BUFFER_FLAGS_SYNC_FRAME
普通帧(P帧): AVCODEC_BUFFER_FLAGS_NONE

更多关于HarmonyOS 鸿蒙Next视频编码器(OH_AVCodecOnNewOutputData)输出的第一帧数据需要怎么处理?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者您好,该问题已反馈研发人员进一步分析,请耐心等待!

在HarmonyOS鸿蒙系统中,当使用视频编码器(如OH_AVCodecOnNewOutputData)输出的第一帧数据时,处理方式通常涉及以下几个关键步骤:

  1. 确认数据完整性:首先,检查输出数据的完整性,确保第一帧数据没有丢失或损坏。这通常包括检查数据包的长度、时间戳等信息。

  2. 解析数据头:由于第一帧数据可能包含额外的信息(如序列头、SPS/PPS等),需要对其进行解析并保存这些信息,以便后续解码或处理时使用。

  3. 缓存或处理:根据应用需求,可以选择将第一帧数据缓存起来,或者直接进行处理(如显示、存储或传输)。如果需要显示,确保显示系统已正确初始化,并准备好接收视频帧。

  4. 同步处理:在处理第一帧数据时,注意与其他系统组件(如音频、时间戳等)的同步,以确保视频输出的连贯性和准确性。

  5. 错误处理:如果处理过程中遇到错误(如数据格式不匹配、解码失败等),应进行相应的错误处理,并记录错误日志以供后续分析。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部