PlayerProxy、DevChannel、MultiMediaSourceMuxer类支持是否开启rtsp/rtmp功能
addStreamProxy增加enable_rtsp、enable_rtmp参数
This commit is contained in:
parent
3c8f96f2a1
commit
3ca699721e
|
|
@ -449,6 +449,8 @@ void installWebApi() {
|
||||||
const string &app,
|
const string &app,
|
||||||
const string &stream,
|
const string &stream,
|
||||||
const string &url,
|
const string &url,
|
||||||
|
bool enable_rtsp,
|
||||||
|
bool enable_rtmp,
|
||||||
bool enable_hls,
|
bool enable_hls,
|
||||||
bool enable_mp4,
|
bool enable_mp4,
|
||||||
int rtp_type,
|
int rtp_type,
|
||||||
|
|
@ -461,7 +463,7 @@ void installWebApi() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//添加拉流代理
|
//添加拉流代理
|
||||||
PlayerProxy::Ptr player(new PlayerProxy(vhost,app,stream,enable_hls,enable_mp4));
|
PlayerProxy::Ptr player(new PlayerProxy(vhost,app,stream,enable_rtsp,enable_rtmp,enable_hls,enable_mp4));
|
||||||
s_proxyMap[key] = player;
|
s_proxyMap[key] = player;
|
||||||
|
|
||||||
//指定RTP over TCP(播放rtsp时有效)
|
//指定RTP over TCP(播放rtsp时有效)
|
||||||
|
|
@ -487,13 +489,15 @@ void installWebApi() {
|
||||||
//测试url http://127.0.0.1/index/api/addStreamProxy?vhost=__defaultVhost__&app=proxy&stream=0&url=rtmp://127.0.0.1/live/obs
|
//测试url http://127.0.0.1/index/api/addStreamProxy?vhost=__defaultVhost__&app=proxy&stream=0&url=rtmp://127.0.0.1/live/obs
|
||||||
API_REGIST_INVOKER(api,addStreamProxy,{
|
API_REGIST_INVOKER(api,addStreamProxy,{
|
||||||
CHECK_SECRET();
|
CHECK_SECRET();
|
||||||
CHECK_ARGS("vhost","app","stream","url");
|
CHECK_ARGS("vhost","app","stream","url","enable_rtsp","enable_rtmp");
|
||||||
addStreamProxy(allArgs["vhost"],
|
addStreamProxy(allArgs["vhost"],
|
||||||
allArgs["app"],
|
allArgs["app"],
|
||||||
allArgs["stream"],
|
allArgs["stream"],
|
||||||
allArgs["url"],
|
allArgs["url"],
|
||||||
allArgs["enable_hls"],
|
allArgs["enable_rtsp"],/* 是否rtsp转发 */
|
||||||
allArgs["enable_mp4"],
|
allArgs["enable_rtmp"],/* 是否rtmp转发 */
|
||||||
|
allArgs["enable_hls"],/* 是否hls转发 */
|
||||||
|
allArgs["enable_mp4"],/* 是否MP4录制 */
|
||||||
allArgs["rtp_type"],
|
allArgs["rtp_type"],
|
||||||
[invoker,val,headerOut](const SockException &ex,const string &key){
|
[invoker,val,headerOut](const SockException &ex,const string &key){
|
||||||
if(ex){
|
if(ex){
|
||||||
|
|
@ -651,9 +655,11 @@ void installWebApi() {
|
||||||
allArgs["app"],
|
allArgs["app"],
|
||||||
allArgs["stream"],
|
allArgs["stream"],
|
||||||
/** 支持rtsp和rtmp方式拉流 ,rtsp支持h265/h264/aac,rtmp仅支持h264/aac **/
|
/** 支持rtsp和rtmp方式拉流 ,rtsp支持h265/h264/aac,rtmp仅支持h264/aac **/
|
||||||
"rtmp://live.hkstv.hk.lxdns.com/live/hks2",//"rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"
|
"rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov",
|
||||||
true,
|
true,/* 开启rtsp转发 */
|
||||||
false,
|
true,/* 开启rtmp转发 */
|
||||||
|
true,/* 开启hls转发 */
|
||||||
|
false,/* 禁用MP4录制 */
|
||||||
0,//rtp over tcp方式拉流
|
0,//rtp over tcp方式拉流
|
||||||
[invoker,val,headerOut](const SockException &ex,const string &key){
|
[invoker,val,headerOut](const SockException &ex,const string &key){
|
||||||
if(ex){
|
if(ex){
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,11 @@ DevChannel::DevChannel(const string &strVhost,
|
||||||
const string &strApp,
|
const string &strApp,
|
||||||
const string &strId,
|
const string &strId,
|
||||||
float fDuration,
|
float fDuration,
|
||||||
|
bool bEanbleRtsp,
|
||||||
|
bool bEanbleRtmp,
|
||||||
bool bEanbleHls,
|
bool bEanbleHls,
|
||||||
bool bEnableMp4) :
|
bool bEnableMp4) :
|
||||||
MultiMediaSourceMuxer(strVhost, strApp, strId, fDuration, bEanbleHls, bEnableMp4) {}
|
MultiMediaSourceMuxer(strVhost, strApp, strId, fDuration, bEanbleRtsp, bEanbleRtmp, bEanbleHls, bEnableMp4) {}
|
||||||
|
|
||||||
DevChannel::~DevChannel() {}
|
DevChannel::~DevChannel() {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ public:
|
||||||
const string &strApp,
|
const string &strApp,
|
||||||
const string &strId,
|
const string &strId,
|
||||||
float fDuration = 0,
|
float fDuration = 0,
|
||||||
|
bool bEanbleRtsp = true,
|
||||||
|
bool bEanbleRtmp = true,
|
||||||
bool bEanbleHls = true,
|
bool bEanbleHls = true,
|
||||||
bool bEnableMp4 = false);
|
bool bEnableMp4 = false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,10 +39,11 @@ public:
|
||||||
const string &strApp,
|
const string &strApp,
|
||||||
const string &strId,
|
const string &strId,
|
||||||
float dur_sec = 0.0,
|
float dur_sec = 0.0,
|
||||||
bool bEanbleHls = true,
|
bool bEanbleRtsp = true,
|
||||||
bool bEnableMp4 = false,
|
|
||||||
bool bEanbleRtmp = true,
|
bool bEanbleRtmp = true,
|
||||||
bool bEanbleRtsp = true){
|
bool bEanbleHls = true,
|
||||||
|
bool bEnableMp4 = false
|
||||||
|
){
|
||||||
if (bEanbleRtmp) {
|
if (bEanbleRtmp) {
|
||||||
_rtmp = std::make_shared<RtmpMediaSourceMuxer>(vhost, strApp, strId, std::make_shared<TitleMete>(dur_sec));
|
_rtmp = std::make_shared<RtmpMediaSourceMuxer>(vhost, strApp, strId, std::make_shared<TitleMete>(dur_sec));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ MediaReader::MediaReader(const string &strVhost,const string &strApp, const stri
|
||||||
}
|
}
|
||||||
|
|
||||||
_iDuration = MAX(_video_ms,_audio_ms);
|
_iDuration = MAX(_video_ms,_audio_ms);
|
||||||
_mediaMuxer.reset(new MultiMediaSourceMuxer(strVhost,strApp,strId,_iDuration/1000.0,false, false));
|
_mediaMuxer.reset(new MultiMediaSourceMuxer(strVhost, strApp, strId, _iDuration / 1000.0, true, true, false, false));
|
||||||
if (_audio_trId != MP4_INVALID_TRACK_ID) {
|
if (_audio_trId != MP4_INVALID_TRACK_ID) {
|
||||||
AACTrack::Ptr track = std::make_shared<AACTrack>(_strAacCfg);
|
AACTrack::Ptr track = std::make_shared<AACTrack>(_strAacCfg);
|
||||||
_mediaMuxer->addTrack(track);
|
_mediaMuxer->addTrack(track);
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,8 @@ static uint8_t s_mute_adts[] = {0xff, 0xf1, 0x6c, 0x40, 0x2d, 0x3f, 0xfc, 0x00,
|
||||||
PlayerProxy::PlayerProxy(const string &strVhost,
|
PlayerProxy::PlayerProxy(const string &strVhost,
|
||||||
const string &strApp,
|
const string &strApp,
|
||||||
const string &strSrc,
|
const string &strSrc,
|
||||||
|
bool bEnableRtsp,
|
||||||
|
bool bEnableRtmp,
|
||||||
bool bEnableHls,
|
bool bEnableHls,
|
||||||
bool bEnableMp4,
|
bool bEnableMp4,
|
||||||
int iRetryCount,
|
int iRetryCount,
|
||||||
|
|
@ -72,6 +74,8 @@ PlayerProxy::PlayerProxy(const string &strVhost,
|
||||||
_strVhost = strVhost;
|
_strVhost = strVhost;
|
||||||
_strApp = strApp;
|
_strApp = strApp;
|
||||||
_strSrc = strSrc;
|
_strSrc = strSrc;
|
||||||
|
_bEnableRtsp = bEnableRtsp;
|
||||||
|
_bEnableRtmp = bEnableRtmp;
|
||||||
_bEnableHls = bEnableHls;
|
_bEnableHls = bEnableHls;
|
||||||
_bEnableMp4 = bEnableMp4;
|
_bEnableMp4 = bEnableMp4;
|
||||||
_iRetryCount = iRetryCount;
|
_iRetryCount = iRetryCount;
|
||||||
|
|
@ -131,12 +135,14 @@ void PlayerProxy::play(const string &strUrlTmp) {
|
||||||
if(dynamic_pointer_cast<RtspPlayer>(_parser)){
|
if(dynamic_pointer_cast<RtspPlayer>(_parser)){
|
||||||
//rtsp拉流
|
//rtsp拉流
|
||||||
GET_CONFIG(bool,directProxy,Rtsp::kDirectProxy);
|
GET_CONFIG(bool,directProxy,Rtsp::kDirectProxy);
|
||||||
if(directProxy){
|
if(directProxy && _bEnableRtsp){
|
||||||
mediaSource = std::make_shared<RtspMediaSource>(_strVhost,_strApp,_strSrc);
|
mediaSource = std::make_shared<RtspMediaSource>(_strVhost,_strApp,_strSrc);
|
||||||
}
|
}
|
||||||
}else if(dynamic_pointer_cast<RtmpPlayer>(_parser)){
|
}else if(dynamic_pointer_cast<RtmpPlayer>(_parser)){
|
||||||
//rtmp拉流
|
//rtmp拉流
|
||||||
mediaSource = std::make_shared<RtmpMediaSource>(_strVhost,_strApp,_strSrc);
|
if(_bEnableRtmp){
|
||||||
|
mediaSource = std::make_shared<RtmpMediaSource>(_strVhost,_strApp,_strSrc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(mediaSource){
|
if(mediaSource){
|
||||||
setMediaSouce(mediaSource);
|
setMediaSouce(mediaSource);
|
||||||
|
|
@ -220,13 +226,13 @@ private:
|
||||||
void PlayerProxy::onPlaySuccess() {
|
void PlayerProxy::onPlaySuccess() {
|
||||||
if (dynamic_pointer_cast<RtspMediaSource>(_pMediaSrc)) {
|
if (dynamic_pointer_cast<RtspMediaSource>(_pMediaSrc)) {
|
||||||
//rtsp拉流代理
|
//rtsp拉流代理
|
||||||
_mediaMuxer.reset(new MultiMediaSourceMuxer(_strVhost, _strApp, _strSrc, getDuration(), _bEnableHls, _bEnableMp4 , true, false));
|
_mediaMuxer.reset(new MultiMediaSourceMuxer(_strVhost, _strApp, _strSrc, getDuration(), false, _bEnableRtmp, _bEnableHls, _bEnableMp4));
|
||||||
} else if (dynamic_pointer_cast<RtmpMediaSource>(_pMediaSrc)) {
|
} else if (dynamic_pointer_cast<RtmpMediaSource>(_pMediaSrc)) {
|
||||||
//rtmp拉流代理
|
//rtmp拉流代理
|
||||||
_mediaMuxer.reset(new MultiMediaSourceMuxer(_strVhost, _strApp, _strSrc, getDuration(), _bEnableHls, _bEnableMp4 , false, true));
|
_mediaMuxer.reset(new MultiMediaSourceMuxer(_strVhost, _strApp, _strSrc, getDuration(), _bEnableRtsp, false, _bEnableHls, _bEnableMp4));
|
||||||
} else {
|
} else {
|
||||||
//其他拉流代理
|
//其他拉流代理
|
||||||
_mediaMuxer.reset(new MultiMediaSourceMuxer(_strVhost, _strApp, _strSrc, getDuration(), _bEnableHls, _bEnableMp4 , true, true));
|
_mediaMuxer.reset(new MultiMediaSourceMuxer(_strVhost, _strApp, _strSrc, getDuration(), _bEnableRtsp, _bEnableRtmp, _bEnableHls, _bEnableMp4));
|
||||||
}
|
}
|
||||||
_mediaMuxer->setListener(shared_from_this());
|
_mediaMuxer->setListener(shared_from_this());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@ public:
|
||||||
PlayerProxy(const string &strVhost,
|
PlayerProxy(const string &strVhost,
|
||||||
const string &strApp,
|
const string &strApp,
|
||||||
const string &strSrc,
|
const string &strSrc,
|
||||||
|
bool bEnableRtsp = true,
|
||||||
|
bool bEnableRtmp = true,
|
||||||
bool bEnableHls = true,
|
bool bEnableHls = true,
|
||||||
bool bEnableMp4 = false,
|
bool bEnableMp4 = false,
|
||||||
int iRetryCount = -1,
|
int iRetryCount = -1,
|
||||||
|
|
@ -86,8 +88,10 @@ private:
|
||||||
void onPlaySuccess();
|
void onPlaySuccess();
|
||||||
int readerCount() ;
|
int readerCount() ;
|
||||||
private:
|
private:
|
||||||
bool _bEnableHls;
|
bool _bEnableRtsp;
|
||||||
bool _bEnableMp4;
|
bool _bEnableRtmp;
|
||||||
|
bool _bEnableHls;
|
||||||
|
bool _bEnableMp4;
|
||||||
int _iRetryCount;
|
int _iRetryCount;
|
||||||
MultiMediaSourceMuxer::Ptr _mediaMuxer;
|
MultiMediaSourceMuxer::Ptr _mediaMuxer;
|
||||||
string _strVhost;
|
string _strVhost;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue