0.引言 本篇文章首要讲授RTSP推流实战,整体推流流程与RTMP推流流程类似。假如对于RTSP协议不领会,还可以参考前面的文章。文章参考列表以下: RTSP协议交互流程之推流分析 手把手搭建RTSP流媒体办事器 具体剖析RTSP框架和数据包分析(1) RTSP协议交互流程之拉流分析 流媒体推拉流实战之RTMP协议分析(BAT口试官保举) 超具体RTMP协议详解(资深流媒体架构师保举) 音频编码实战(1) 聊聊视频直播提早的几点优化 流媒体之推流拉流实战之关键点优化分析(2) 1.项目情况预备和演示 先预备好情况,预备好YUV文件和PCM文件。 履行以下号令: (1)从文件提取pcm数据 ffmpeg -i a.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm (2)从文件提取yuv数据 ffmpeg -i b.mp4 -an -c:v rawvideo -pix_fmt yuv420p 720x480_25fps_420p.yuv (3)将文件拷贝到以下目录: (4)办事器利用EasyDarwin,仅仅当做测试利用。办事器上推流的打印,推流的进程描写。 (5)ffplay拉流测试号令: ffplay -i rtsp://192.168.129.48/live/livestream 当地预览与拉流显现对照。 2.整体框架分析 音视频收集模块,经过收集后稀有据就利用回调函数去挪用音视频编码模块,音视频编码后首先就要放到行列,可以放到同一个行列或分歧的行列。rtsp推流模块从行列里面去取数据。其框图和数据结构以下: AudioCapture---->PcmCallback----->AACEncoder ------->post到行列------->RTSP_Pusher VideoCapture----->YuvCallback------->H264Encoder 3.音视频收集 音视频收集都是自力的线程。CommonLooper实现一个线程的Looper。AudioCaptuer和VideoCapturer城市去继续CommonLooper。 (1).模拟的收集,是实时,依照播放速度去读取yuv/pcm数据。 (2).每帧数据都需要打上时候戳。重新封装了一个类,专门去打时候戳。 PushWork是一个开放个用户的类,由用户去设备参数等操纵。参数类,利用key-value的方式去做。 (3)读取pcm数据,音频收集完数据后,经过回调函数callback_get_pcm_(pcm_buf_, nb_samples *4)发送进来。以下代码: 4.重采样 假如麦克风收集的声音的输出格式和编码音频的输入参数纷歧致(音频解码和音频播放纷歧致,也需要做重采样),那就需要做重采样。 (1)音频编码参数设备,以下代码: (2)视频参数设备,以下代码: (3)初始化视频编码器参数设备,以下代码: 这里的rtsp_debug设备为1,暗示可以开启预览。
(4)利用SDL开启预览,以下代码: (5)读取用户设备的音视频参数,以下代码: 5.视频编码类H264Encoder 假如视频间隔不均匀,波动比力大,这里就做了一个帧间隔的校正算法,让帧间隔均匀。 (1)启动rtsp推流模块,并做初始化,以下代码: (2)rtsp推流的时辰,需要设备对应的音视频编码参数。以下: 为了避免毗连时梗塞,开启毗连超机会制。假如办事器卡死或断开,这个时辰推流模块去毗连就会堵住。所以要利用超时断开重连机制。 留意:在前面专门讲优化的文章分析过,为了节省时候,在初始化顺序,一定是首先初始化推流模块开启收集毗连,由于收集比力比力耗时,能够会致使数据帧的缓存。具体缘由可以看看前面讲优化的文章。音视频的捕捉是放在最初面。以下顺序: (3)设备和开启音频捕捉,并设备回调,把捕捉的数据发送给音频编码器。以下图: (4)在音频收集的回调函数中开启开启编码。以下代码: 留意:ffmpeg 内置的aac编码器,需要的格式都是float的 planar的格式。 (5)设备和开启视频捕捉,并设备回调,把捕捉的数据发送给视频编码器。以下代码: (6)在视频收集的回调函数中开启开启编码。以下代码: 留意:音视频收集返来就一定要去读取时候戳。 (7)编码后的音视频放到同一个行列,需要标志是音频包还是视频包。以下: 这里的推流模块rtsp_pusher,就会开一个线程,循环去推送。 (8)挪用RTSPPusher::sendPacket(AVPacket *packet, RTSPMediaType_T mediatype)去发送数据。以下: (9)封闭推流的流程,一般都是与初始化相反。封闭流程以下: 音频的capture->音频reseample->音频encoder->音频pusher。 视频的capture->视频reseample->视频encoder->视频pusher。 6.总结 本篇文章首要讲授了RTSP推流的首要流程和重要源码实战分析,了解完后,可以有一个整体分析。接待关注,收藏,转发,分享。 前期关于项目常识,也会更新在微信公众号“记录天下 from antonio”,接待关注 |
0.引言本篇文章主要讲解RTSP推流实战,整体推流流程与RTMP推流流程类似。如果对于RTSP
随着视频号直播的不断完善,美颜、抽奖、推流直播等功能纷纷上线,【附近的直播和人】
很多人直播间没有人,就是因为搞不懂抖音直播间推流机制。不明白推流机制就找不到正确
思路:opencv读取视频 — 将视频分割为帧 — 将每一帧进行需求加工后 — 将此帧写入pi
500强直播策划,策划过多起直播。经常会遇到需要全平台推流的情况,但是OBS的原生软件
#头条文章养成计划#根据我400多天创作的亲身体验,文章推荐的时间比较长,而微头条的
#头条创作挑战赛#头条推流的机制是怎样的?在头条写作了31天,小编一直被这个问题困扰
Open Broadcaster Software(简称 OBS)是一款好用的第三方开源程序直播流媒体内容制
写在前面本文将介绍以下内容:什么是推流?将介绍推流常见的协议RTMP,HLS等。怎么用f
头条直播换到西瓜后台啦! 推流还是一样方便快捷! 功能更多更
最近有很多同学问我视频号推流直播怎么做,这种三两句话回答不清楚,今天特意写了详
推流:将直播内容推送至服务器的过程拉流:为服务器已有直播内容,用指定地址进行拉取
我是依伊,一个全职写作的创作人,点击右上角关注,为你分享【新媒体写作变现】和【个
用OBS作为电脑直播推流,是很多人使用的一款开源软件。我们使用OBS时,它默认的是只能
你是否也遇到过辛辛苦苦拍了视频,但结果却还不如跳舞的小姐姐?为什么别人随便拍的视
专业直播操盘手必须掌握的OBS推流直播技能私域直播母東東,业绩增长分分钟Hello,各位
想在直播间中直播游戏,那就需要用到2个东西,分别是推流码和obs软件。那抖音直播推流
缘起: 最近工作比较忙、文章也没怎么更新,不过最近 一段时间过来问我视频号问题的朋
随着近几年互联网技术高速发展,人们对社交形式多样化的需求不断增加,从一开始的文字
直播目前处于一个风口期,很多直播开始跨平台跨地域直播,如何实现异地直播,跨平台直
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15314649589
Copyright @ 2022-2044 杭州共生网络 www.gongshengyun.cn Powered by Discuz!