不久前我们已经在RTMP推送端扩展支持了HEVC(H.265 后文统称H265)编码格式,但是,由于RTMP官方指定的协议格式已经不再更新,官方的播放器的Flash播放器并不支持H265格式的编码数据进行解码播放;现在,我们需要在播放器端解析RTMP流时对H265编码格式进行扩展支持。
首先,我们可以通过扩展ffmpeg,让其支持拉H265封装的RTMP流进行解码播放,我们可以通过金山云对FFmepg的扩展支持H265来解决。
然后,我们通过修改SkeyeRTMPClient的代码实现对H265 的支持,因为我们已经实现了推送端的扩展支持,所以,播放端支持则相对比较简单;不过依然有几个方面我们需要注意;下面将对整个扩展流程进行介绍。
1. 扩展编码ID
和推送端一样,需要先扩展支持H265的编码ID,我们定义为12,如下代码所示:
enum FlvVideoCodecId
{
e_FlvVideoCodecId_None = 0,
e_FlvVideoCodecId_Jpeg = 1,
e_FlvVideoCodecId_H263 = 2,
e_FlvVideoCodecId_Screen = 3,
e_FlvVideoCodecId_Vp6 = 4,
e_FlvVideoCodecId_Vp6Alpha = 5,
e_FlvVideoCodecId_ScreenV2 = 6,
e_FlvVideoCodecId_Avc = 7,
// RTMP扩展支持HEVC(H.265)
e_FlvVideoCodecId_Hevc = 12,
};
enum FlvCodeId
{
FlvCodeId_Jpeg = 1,