基于EasyRTMP/EasyRTSPClient实现多路RTSP转RTMP流直播推送工具RTMPLive
来源:互联网 发布:网络兼职申请表 编辑:程序博客网 时间:2024/05/19 04:06
介绍
EasyRTMP是EasyDarwin团队开发的一套夸平台的RTMP直播推送功能组件,内部集成了包括:基本RTMP协议、断线重连、异步推送、环形缓冲区、推送网络拥塞自动丢帧、缓冲区关键帧检索、事件回调(断线、音视频数据回调),支持市面上绝大部分的RTMP流媒体服务器。详见https://github.com/EasyDarwin/EasyRTMP。
EasyRTSPClient是一套全平台支持稳定、易用、支持重连的RTSPClient工具。能够拉取RTSP流地址并解析出视频帧和音频帧数据。详见https://github.com/EasyDarwin/EasyRTSPClient。
两者都是支持多路同时操作的SDK库,这样就方便了我们基于他们做多路RTSP流同时转成RTMP进行推送。
多路RTSP转RTMP流实现
单路RTSP转RTMP流可直接参考https://github.com/EasyDarwin/EasyRTMP中EasyRTMP_RTSP的Demo。
多路RTSP流转RTMP时,采用Config.ini配置文件,来配置每路输入的RTSP地址,以及目标RTMP地址。
[channel0]rtsp=rtsp://admin:admin@192.168.66.222/11rtmp=rtmp://www.easydss.com:10085/live/test1option=1[channel1]rtsp=rtsp://admin:admin@192.168.66.222/22rtmp=rtmp://www.easydss.com:10085/live/test2
初始化读取Config.ini文件中的配置信息,保存到std::list中,然后为每个channel都起一路EasyRTSPClient来获取RTSP数据。
std::list<_channel_info*>::iterator it; for(it = gChannelInfoList.begin(); it != gChannelInfoList.end(); it++) { _channel_info* pChannel = *it; pChannel->fLogHandle = TRACE_OpenLogFile(pChannel->fCfgInfo.channelName); TRACE_LOG(pChannel->fLogHandle, "channel[%d] rtsp addr : %s\n", pChannel->fCfgInfo.channelId, pChannel->fCfgInfo.srcRtspAddr); TRACE_LOG(pChannel->fLogHandle, "channel[%d] rtmp addr : %s\n", pChannel->fCfgInfo.channelId, pChannel->fCfgInfo.destRtmpAddr); EasyRTSP_Init(&(pChannel->fNVSHandle)); if (NULL == pChannel->fNVSHandle) { TRACE_LOG(pChannel->fLogHandle, "%s rtsp init error. ret=%d!!!\n", pChannel->fCfgInfo.channelName , iret); continue; } unsigned int mediaType = EASY_SDK_VIDEO_FRAME_FLAG | EASY_SDK_AUDIO_FRAME_FLAG; EasyRTSP_SetCallback(pChannel->fNVSHandle, __RTSPSourceCallBack); EasyRTSP_OpenStream(pChannel->fNVSHandle, pChannel->fCfgInfo.channelId, pChannel->fCfgInfo.srcRtspAddr, EASY_RTP_OVER_TCP, mediaType, 0, 0, pChannel, 1000, 0, pChannel->fCfgInfo.option, 0); }
在每个__RTSPSourceCallBack回调函数中去调用一路EasyRTMP对象,将视频流和音频流封装成RTMP格式并推送到RTMP服务器。详细代码请去GitHub下载https://github.com/jinlong0813/RTMPLive
编译及运行
Windows上使用Visual Studio 2010开发,当然各位可以改成自己的编译环境。
Linux上编译命令如下:
清理: ./Buildit clean32位编译:./Buildit i38664位编译:./Buildit x64
运行时将Config.ini文件放至于可执行文件相同路径下,然后直接执行可执行程序,不用带参数。
下载
工具下载:http://pan.baidu.com/s/1sl8qxaP
工具代码下载:https://github.com/jinlong0813/RTMPLive
获取更多信息
邮件:support@easydarwin.org
WEB:www.EasyDarwin.org
QQ交流群:587254841
Copyright © EasyDarwin.org 2012-2017
- 基于EasyRTMP/EasyRTSPClient实现多路RTSP转RTMP流直播推送工具RTMPLive
- EasyRTMP+EasyRTSPClient实现的多路(支持断线重连)RTSP转RTMP直播推流工具
- [转载]使用EasyRTSPClient与EasyRTMP推送RTSP视频源进行RTMP直播
- EasyRTMP实现将RTSP流转换成RTMP流实现RTSP直播转RTMP直播的功能
- Android平台使用EasyRTMP将RTSP转RTMP流进行RTMP直播推送
- EasyRTMP推送RTSP视频源进行RTMP直播
- EasyRTMP实现RTMP异步直播推送之环形缓冲区设计
- EasyRTMP之RTMP直播高效推送缓冲区
- EasyRTMP实现Demux解析MP4文件进行rtmp推送实现RTMP直播功能
- EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
- EasyRTMP手机直播推送rtmp流flash无法正常播放问题
- EasyRTMP内置IPCamera实现RTMP直播摄像机功能
- EasyRTMP安卓Android手机直播之AAC采集、编码与RTMP推送
- EasyRTMP之MP4文件进行rtmp点播直播推送(三)
- EasyRTMP之对接海康、大华等IPCamera SDK进行RTMP直播推送(四)
- iOS直播-基于RTMP的视频推送
- EasyRTMP实现的一套简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)RTMP直播推送库
- EasyRTMP 简单高效的RTMP推送库
- 第一人称<Fenshu >
- 会话跟踪机制 Session
- C Primer Plus学习笔记----第一章初识C语言
- 第一人称<Move>
- NorFlash、NandFlash、eMMC比较区别
- 基于EasyRTMP/EasyRTSPClient实现多路RTSP转RTMP流直播推送工具RTMPLive
- win32 字体 api学习总结
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- Virtural Reality, Visual Quality相关文章
- java的定时任务调度
- 【翻译】--docker get started 01
- python中的list和array的不同之处
- 第一人称<Move>
- 2017.6.18 学习Python-文件的操作