前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在OBS上进行H265推流

在OBS上进行H265推流

作者头像
我不是码神
发布2022-07-28 14:31:58
1.8K0
发布2022-07-28 14:31:58
举报
文章被收录于专栏:流媒体技术

OBS官方明确表态不支持H265,貌似以后也不会支持,什么原因呢?可以看官方论坛上的吵架

h265 Support

不想看英文的,我这里简单说一下,就是因为Adobe公司的RTMP协议里面并没有支持H265,所以他们不想支持H265。当然群众的呼声还是十分强烈的。那么问题来了,如何修改OBS的开源代码使得其支持H265格式呢?

开始尝试:

首先github上clone下OBS源码,按照官方说明,配置编译环境,这里不多说。编译成功后,开始尝试寻找编码器的部分代码。

找到obs-ffmpeg这个模块,里面有个文件jim_nvenc.c

代码语言:javascript
复制
struct obs_encoder_info nvenc_info = {
	.id                      = "jim_nvenc",
	.codec                   = "h264",
	.type                    = OBS_ENCODER_VIDEO,
	.caps                    = OBS_ENCODER_CAP_PASS_TEXTURE,
	.get_name                = nvenc_get_name,
	.create                  = nvenc_create,
	.destroy                 = nvenc_destroy,
	.update                  = nvenc_update,
	.encode_texture          = nvenc_encode_tex,
	.get_defaults            = nvenc_defaults,
	.get_properties          = nvenc_properties,
	.get_extra_data          = nvenc_extra_data,
	.get_sei_data            = nvenc_sei_data,
};

上面这段代码就是nvenc的h264编码模块,nvenc是NVIDIA推出的显卡编码工具,同时具备h264和h265编码功能,只是OBS没有使用h265的部分而已。

于是仿照上面的代码,构建h265的模块。

代码语言:javascript
复制
struct obs_encoder_info hevc_nvenc_info = {
	.id = "hevc_nvenc",
	.codec = "hevc",
	.type = OBS_ENCODER_VIDEO,
	.caps = OBS_ENCODER_CAP_PASS_TEXTURE,
	.get_name = hevc_nvenc_get_name,
	.create = hevc_nvenc_create,
	.destroy = nvenc_destroy,
	.update = nvenc_update,
	.encode_texture = nvenc_encode_tex,
	.get_defaults = nvenc_defaults,
	.get_properties = nvenc_properties,
	.get_extra_data = nvenc_extra_data,
	.get_sei_data = nvenc_sei_data,
};

函数大部分都可以复用h264的,除了create和get_name。

create函数也基本和H264一样,里面把NV_ENC_CODEC_H264_GUID替换成NV_ENC_CODEC_HEVC_GUID,类似这种替换一下,

然后去obs_ffmpeg.c里面添加obs_register_encoder(&nvenc_encoder_info);进行注册。OBS即可使用这个编码器。当然最终没有成功,nVidia的驱动报错了,研究下去比较费劲,所以就剑走偏锋,找到外国友人提供的线索,OBS还有一个录像功能,可以选择FFMPEG自定义输出,可以在里面选择URL输出,即可进行推流。此时需要编译一个可以进行h265推流的FFMPEG,然后放到obs编译配置里面去,一起编译,就可以调用这个自定义的FFMPEG,最终实现H265的rtmp推流。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档