FFmpeg 代码实现流媒体推流(RTSP)

FFmpeg 代码实现流媒体推流(RTSP),第1张

最近需要做实时录屏并把视频推流到RTSP服务器,具体流程是抓取屏幕内容(bitmap),并把bitmap转化为YUV,接着把YUV编码成H264,再把H264码流推到RTSP服务器;把采集到的PCM编码为AAC,再把AAC推流至RTSP服务器。

看了雷神的一篇文章: 最简单的基于FFmpeg的推流器(以推送RTMP为例) ,他是把本地的视频文件推流至RTMP服务器,并不符合我的要求。

接着我找到另一篇文章: ffmpeg实现H264压缩并且推流至RTSP ,这篇文章只有图像编码,并没有音频编码,并且推流之后并没有播放成功。

我综合上面两位大佬的思路,和查找一些资料实现了这个功能。

RTSP服务器使用的是 HappyTime 的免费试用版本。

我抓到的bitmap是BGRA格式的,所以使用的图像格式是 AV_PIX_FMT_BGRA cropImage 是含有rgba图像的数组

调用:

由于我是实时抓取的屏幕, frame_yuv->pts 设为当前的时间戳,以保证能正常播放。

调用:

调用:

其中pcm_buff是包含pcm数据的数组

使用udp传输时传到1400多帧就断开链接了,原因不明,所以改用使用tcp协议传输

延迟有15秒左右

参考:

https://blogcsdnnet/leixiaohua1020/article/details/39803457

https://blogcsdnnet/yunge812/article/details/79345584

https://tracffmpegorg/wiki

直播推流软件OBS用于视频号等直播平台的好处有占用资源相对较少、永久免费等。

知名直播推流软件OBS支持 OS X、Windows、Linux操作系统,适用于多种直播场景,满足大部分直播行为的操作需求。作为一款开源软件,代码贡献一直比较活跃,功能也能满足基本游戏直播、秀场直播基本功能。

并且相较于直接利用抖音、快手、bilibili进行直播,obs可以选择推流高清分辨率直播,画面会更清晰。obs软件除了可以一键推流到抖音、快手这种公域直播平台,还能实现社群、APP商城的私域直播。

OBS推送的数据流是人们在互联网上观看视频时使用的数据传输方法,这是一种通常一次从远程存储位置一次分发视频文件的方法。通过一次在互联网上传输几秒钟的文件,客户端设备不必在开始播放之前下载整个视频。

如果你想让直播限定你指定的人群看,如您的社群、商城用户, 还可以通过 obs加企业直播系统(类似保利威直播),直接实现微信群直播、企业商城直播等私域直播,直接分享给指定的社群人员、用户观看,也很方便。

阿里云官网-OBS推流工具

OBS主界面,图层文字视频 游戏捕捉都在这操作

在“来源”点击右键会出现如下:获取窗口、显示器获取、添加文字等等选项,下面      

1)获取窗口:就是添加单个窗口给观众看。

2)显示器获取:就是把你的整个桌面所有图像获取到直播软件

3)源:就是在直播画面中添加

4)投影片放映:自己添加多种以幻灯片形式放给观众。

5)文字来源:在直播画面中加入文字

6)视频捕捉设备:摄像头、采集卡等采集外设画面接入口

7)游戏源:全屏游戏必须用游戏源来直播,否则观众看是黑屏。无边框或窗口化全屏可以直接用添加窗口进行直播。

设定画质码率,推荐 1500-2500之间 不然观众会卡  编码推荐显卡解码 不占CPU 对于低配置有明显的优化作用

设定分辨率  这个就自己设置吧 按游戏来设置

RTMP地址 和 串流码  这个从直播平台复制就行

设置快捷键还是需要的。

最后就可以开始直播了,点开始串流    直播间就能看到画面了,激动吗。

细致的调整,和个性化设置就要自己调整了。比如文字,啊~之类的

区别如下:

第一、推流是指把采集阶段封包好的内容传输到服务器的一个过程。通俗理解就是将现场的视频音频信号传输到网络的过程,而OBS则是一个视频采集推流软件,它的作用就是把语音视频流进行采集并推送到媒体服务器。

第二、不推流就没法把采集到的语音视频文件进行推送,所以导致你也没办法直播。很好理解,就像你不打电话给你朋友,你朋友也就接不到你的电话一样。

为什么以前不需要推流:

因为你以前遇到的都是固定视频,你观看的过程是你的观看设备从服务器上下载下来你才看到的。但是服务器上为什么会有呢?是因为对方提前上传上去了。但是直播作为流媒体,不像以前的固定视频,有人先上传到服务器,你直接从服务器获取。

直播是流媒体,所谓流媒体就是你发生一点都要及时上传,这样对方才能及时看到,理解了直播的及时性,以及推流就是及时上传的意义之后,就明白了为什么直播需要及时推流。

推流步骤

1、电脑端登录视频号助手,点击直播管理模块,填写好直播所需配置创建直播,获得推流地址和推流密钥。

2、电脑端按照 OBS Studio 推流软件

3、打开OBS软件完成相关配置,首次打开会弹出自动配置向导,填入从视频号助手复制的串流信息:服务器——推流地址,串流密钥——串流密钥

4、添加各种来源(摄像头、背景图、贴片、视频文件等):视频采集设备——摄像头,显示器采集——捕获投屏软件画面,图像——背景图、商品展示贴片,媒体源——视频文件

5、开启工作室模式,右侧控件选择工作室模式,工作室模式下,可以在左边画面进行编辑预览,编辑完成后单击

转场特效即可将预览窗的直播画面推送到输出窗口,同时观众就能通过直播间看到编辑后的实时画面。

6、开始直播推流,编辑完直播所需的内容后,右侧控件处选择「开始推流」即可将视频流推送到设 置的推流地址,OBS软件下方绿灯常亮,并且没有出现丢帧,视频号助手上同步 显示OBS推流的画面则表示推流成功。

7、回到视频号助手后台,点击「开始直播」即正式开始直播,用户可以通过视频号直播间同步看到实时画面。

8、开始直播后也可以修改直播信息对直播的封面和主题进行修改。

9、直播间挂商品,推流直播仍需通过手机端进行直播间商品上下架,手机登录该视频号的微信,进入直播间,进行商品上下架相关操作。

10、结束直播

通过电脑端先在视频号助手上点击「结束直播」,再通过OBS软件点击「停止推 流」,顺序不能反过来,否则观众会看到黑屏画面。

1、首先安装并配置OBS推流软件,将需要推流的视频内容推送到第三方服务提供商的服务器上。

2、然后第三方服务提供商对推送的视频内容进行转码、处理和分发,并将处理后的视频内容分发到目标平台上。

3、最后第三方服务提供商根据使用的服务类型和服务量收取相应的服务费用。费用根据服务量、使用时间、视频质量等因素进行计费。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » FFmpeg 代码实现流媒体推流(RTSP)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情