大家都知道,pjsip对h264视频的支持实现比较弱,只支持openh264和ffmpeg的软编软解,在一些嵌入式平台中,如何实现硬编硬解呢?答案是肯定的,笔者就实现了h264的硬编硬解功能。其基本思路是参考openh264实现一个自己的h264 codec编解码器和参考ffmpeg_dev实现一个自己的h264 dev采集设备,然后在自己增加的2个模块中实现h264数据及yuv数据的透传,从而实现真正的硬编码,硬解码。其思路主要是通过内部数据结构,在不破坏pjsip原有media处理流程的基础上,实现h264的硬编硬解。
其数据流如下:
my_h264_codec编码 <== 采集h264编码裸流 (注意pjsip原有流程是采集yuv再编码,此处是直接透传已经编码的h264数据) <== my_h264_dev
my_h264_codec解码 ==> 发送h264解码裸流 (注意pjsip原有流程是发送解码后的yuv帧,此处是直接透传未解码的h264裸数据帧) ==> my_h264_dev
如果不用ui层进行yuv的render显示,则下面这个步骤可以不实现
my_h264_codec获取解码结果 <== 发送h264解码后yuv数据帧 (注意pjsip原来无此流程,此步骤为新增) <== my_h264_dev
欢迎试用PC版软件,可以跟linphone互通