⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediastation.cpp

📁 随着计算机信息技术的飞速发展
💻 CPP
字号:
// MediaStation.cpp: implementation of the CMediaStation class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MediaStation.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMediaStation::CMediaStation()
{
 //InitCOM();
	CreateObjects();
}

CMediaStation::~CMediaStation()
{
 //ReleaseCOM();
 ClearObjects();
}


BOOL CMediaStation::ConnectToServer(LPCSTR mServerName)
{
	char mbuf[30];
 	//HRESULT hRc;
    if(mServerName==NULL)
	{
       ZeroMemory(mbuf,sizeof(mbuf));
 	   gethostname (mbuf,sizeof(mbuf));
	   try
	   {
	     mServer.Connect((LPCSTR)mbuf);
	   }
 	   catch(...)
	   {
		 return FALSE;
	   }
	}
	else
	{
	   try
	   {
		mServer.Connect(mServerName);
	   }
  	   catch(...)
	   {
		 return FALSE;
	   }
	}
    return TRUE;
 }

BOOL CMediaStation::CreateStation(LPCSTR mStationName,LPCSTR mMulticastAddress,int mPort,LPCSTR mNetCardAddress,LPCSTR mNSCPath,LPCSTR mStationFormatFile,LPCSTR mFormatType)
{
  if(mServer==NULL) return FALSE;
  mChannels=mServer.GetChannels();//取得站点对象集
  if(mChannels==NULL) return FALSE;
  mChannel=mChannels.Find(mStationName);//取得站点对象
  if(mChannel==NULL)
  {
     mChannel=mChannels.Open(mStationName,1/*MCM_PA_READ*/);//创建站点对象  
  }
  mChannel.SetMulticastAddress(mMulticastAddress);//多播地址
  mChannel.SetPort(mPort);//多播端口
  mChannel.SetDeliveryMode(15/*MCM_DM_ALL*/);//发布方式
  mChannel.SetMulticastAdapterAddress(mNetCardAddress);//本机地址 
 
  mChannelFormats=mChannel.GetChannelFormats();//取得站点格式对象集
  mChannelFormats.Add(mStationFormatFile,3/*MCM_ASF_CH_FORMAT_FILE*/);//添加站点格式描述
  TCHAR mNSCFileName[256];
  ZeroMemory(mNSCFileName,sizeof(mNSCFileName));
  wsprintf(mNSCFileName,"%s\\%s.nsc",mNSCPath,mStationName);
  mChannel.WriteNSC(mNSCFileName,TRUE); //生成NSC文件
  return TRUE;
}
BOOL CMediaStation::DeleteStation(LPCSTR mStationName)
{
  if(mServer==NULL) return FALSE;
  mChannels=mServer.GetChannels();
  if(mChannels==NULL) return FALSE;
  mChannel=mChannels.Find(mStationName);
  if(mChannel==NULL)
  {
	  return FALSE;
  }
  mChannel.Close(); //删除站点
  return TRUE;
}
BOOL CMediaStation::CreateStream(LPCSTR mStreamSource, LPCSTR mStreamAlias)
{
  if(mServer==NULL) return FALSE;
  mStreams=mServer.GetStreams();//取得流集对象
  mStream=mStreams.Find(mStreamAlias);
  if(mStream==NULL)
  {
     mStream=mStreams.Open(mStreamSource,mStreamAlias,7/*MCM_PA_ALL_ACCESS*/);//添加流
  }
  else
  {
  }
  return TRUE;
}
BOOL CMediaStation::StartStream(LPCSTR mStationName,LPCSTR mStreamAlias)
{

  if(mServer==NULL) return FALSE;
  mChannels=mServer.GetChannels();
  if(mChannels==NULL) return FALSE;
  mChannel=mChannels.Find(mStationName);
  if(mChannel==NULL)
  {
	  return FALSE;
  }
  mStreams=mServer.GetStreams();
  mStream=mStreams.Find(mStreamAlias);
  if(mStream==NULL)
  {
	 return FALSE;
  }  
  mChannel.SetActiveStream(mStream) ;//设置活动流
  mStream.Start(0); //启动流,从0开始
  return TRUE;
}
BOOL CMediaStation::StopStream(LPCSTR mStationName,LPCSTR mStreamAlias)
{
  
  if(mServer==NULL) return FALSE;
   mChannels=mServer.GetChannels();
  if(mChannels==NULL) return FALSE;
 mChannel=mChannels.Find(mStationName);
  if(mChannel==NULL)
  {
	  return FALSE;
  }
  mStreams=mServer.GetStreams();
  mStream=mStreams.Find(mStreamAlias);
  if(mStream==NULL)
  {
	 return FALSE;
  }
  
  mStream.Stop();//停止流
  mChannel.SetActiveStream(NULL);//取消活动流 
  return TRUE;
}

void CMediaStation::CreateObjects()
{
 mServer.CreateDispatch("NSChannelMgrObj.1"); 
}

void CMediaStation::ClearObjects()
{
 mServer.ReleaseDispatch(); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -