金山修改的版本
https://github.com/ksvc/FFmpeg/
直播协议HLS和RTMP协议是两大主流协议。RTMP在多年前就已经停止更新,因此无法支持HEVC的编码格式。目前国内的CDN还有金山等已经对RTMP进行了标准扩展,播放器上ijkplayer也扩展了该修改
libavformat/flv.h | 1 +
libavformat/flvdec.c | 16 +++++++++++++---
libavformat/flvenc.c | 29 ++++++++++++++++++++---------
3 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/libavformat/flv.h b/libavformat/flv.h
index df5ce3d17f8..089bc76972d 100644
--- a/libavformat/flv.h
+++ b/libavformat/flv.h
@@ -109,6 +109,7 @@ enum {
FLV_CODECID_H264 = 7,
FLV_CODECID_REALH263= 8,
FLV_CODECID_MPEG4 = 9,
+ FLV_CODECID_HEVC = 12,
};
enum {
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 2d89bef15f2..c8073b88a92 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -36,6 +36,7 @@
#include "internal.h"
#include "avio_internal.h"
#include "flv.h"
+#include "hevc.h"
#define VALIDATE_INDEX_TS_THRESH 2500
@@ -291,6 +292,8 @@ static int flv_same_video_codec(AVCodecParameters *vpar, int flags)
return vpar->codec_id == AV_CODEC_ID_VP6A;
case FLV_CODECID_H264:
return vpar->codec_id == AV_CODEC_ID_H264;
+ case FLV_CODECID_HEVC:
+ return vpar->codec_id == AV_CODEC_ID_HEVC;
default:
return vpar->codec_tag == flv_codecid;
}
@@ -340,6 +343,11 @@ static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream,
par->codec_id = AV_CODEC_ID_MPEG4;
ret = 3;
break;
+