FLV封装H265

        我的音视频/流媒体开源项目(github)

        针对FLV格式,目前许多开源项目和常见的视频处理工具和流媒体服务器,仍主要支持H.264视频编码格式,尚未完全兼容H.265。ffmpeg和vlc都不支持H265编码格式的FLV,不知道后续版本会不会支持。RTMP也是用FLV格式传输音视频,这也导致很多RTMP流媒体服务器也不支持H265。本文将介绍FLV如何封装H265。

        FLV由FLV Header、PreviousTagSize、Tag组成。如下图所示,为FLV文件结构:

        Tag由Tag Header和Tag Data组成,RTMP传输音视频就是传输的Tag Data。Tag有三种类型,Audio Tag(音频Tag),Video Tag(视频Tag),script Tag(又称Metadata Tag),结构如下图所示:

        接下来重点看一下视频的Tag Data,如下图所示:

        如果CodecId=7则表示视频是H264编码,就是AVCVIDEOPACKET格式,如下图所示:

        如果 AVCPacketType = 0,那么Data就是AVCDecoderConfigurationRecord格式。如果AVCPacketType = 1,那么Data就是H264的NALU(4字节的NALU size+去掉起始码的NALU)。

        FLV封装H265和H264的流程是一样的,区别如下:

        1、H265的CodecId=12

        2、数据格式为HEVCVIDEOPACKET,和AVCVIDEOPACKET结构一样,就是名字不同而已

        3、如果 AVCPacketType = 0,那么Data就是HEVCDecoderConfigurationRecord格式,如果AVCPacketType = 1,Data和H264完全一样

        关于AVCDecoderConfigurationRecord和HEVCDecoderConfigurationRecord参考我的另外一篇文章:H264/H265的两种格式Annex B、AVCC(H264)/HVCC(H265)_265h,cc-CSDN博客

        推荐一个flv库:libflv。实现FLV封装、解封装,纯C语言实现,支持H264/H265、AAC,支持跨平台,也可以用于RTMP音视频Tag Data的生成和解析,地址:https://github.com/BreakingY/libflv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值