ffmpeg推h265流

这篇博客介绍了金山对RTMP协议的扩展,以支持HEVC编码格式。通过对FFmpeg项目的libavformat/flv.h、flvdec.c和flvenc.c文件的修改,金山使得RTMP协议能够处理HEVC编码的视频流,同时ijkplayer也进行了相应的扩展。这些改动涉及视频码率标识、解码器配置和编码器输出等关键部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

金山修改的版本

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;
+    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值