• 大小: 18.12MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-02
  • 语言: C/C++
  • 标签: AAC  RTSP  EasyDarwin  

资源简介

介绍一个基于C++开发的RTSP/RTMP推流组件PushStream,PushStream推流基础组件是一款推送流媒体音/视频流给标准RTSP流媒体服务器 (如EasyDarwin、Wowza) 或者RTMP流媒体服务器 (如Nginx) 的流媒体推送库

资源截图

代码片段和文件信息

/*******************************************************************************
Copyright (c) wubihe Tech. Co. Ltd. All rights reserved.
--------------------------------------------------------------------------------
 
Date Created: 2014-10-25
Author:     wubihe QQ:1269122125 Email:1269122125@qq.com
Description: 推流工具库,协议支持RTMP/RTSPRTSP支持RTP OVER TCP/RTP OVER UDP
视频编码格式支持H264H265音频编码格式支持AACG711A/G711U
封装格式支持MPEG2-PSMPEG2-TSFLV格式本Demo模拟AAC编码器从文
件循环读取AAC数据发送给EasyDarwin服务器
--------------------------------------------------------------------------------
Modification History
DATE          AUTHOR          DEscriptION
--------------------------------------------------------------------------------

********************************************************************************/
#include “IPushStream.h“
#include “Xbase/XThread.h“
#include 


//只推送AAC音频到RTSP服务器上
#define PUSH_AAC_ONLY




#ifdef PUSH_AAC_ONLY
#define INPUT_FILE_NAME (“huangdun.aac“)
#endif



//推流地址
#define PUSH_STREAM_URL (“rtsp://192.168.1.110/live.sdp“)

#define MAX_BUFFER_SIZE     (1024*8)

//读取文件
static FILE*   gInputFile = NULL;
//推流句柄
PSTREAM_HANDLE gPushHandle ;
//H264流句柄
int    gStreamId;

unsigned char  gszReadBuffer[MAX_BUFFER_SIZE];


//日志回调
void CALLBACK LogCBFun(PSTREAM_LOG_LEVEL nLogLevel const char *szMessage void* pUserData )
{
printf(“%s\n“szMessage);
}

//消息回调
void CALLBACK MsgCBFun(PSTREAM_HANDLE lHandle PSTREAM_MSG_TYPE eTypevoid* pUserData )
{
switch (eType)
{
case PSTREAM_MSG_TYPE_OFFLINE:
printf(“收到离线消息\n“);
break;
default:
break;
}
}


//线程循环读取本地文件 模拟从编码器获取的编码数据
#ifdef __WINDOWS__
unsigned XAPI Thread1Handle(void* pParam)
#endif//__WINDOWS__
#ifdef __GNUC__
void* XAPI Thread1Handle(void* pParam)
#endif//__GNUC__
{
XThread* pThread = (XThread*)pParam;
//或者采用阻塞版本TryWaitQuit(uint32)
while(!pThread->IsExitThread())
{

int iReadSize = fread(gszReadBuffer 1 MAX_BUFFER_SIZE gInputFile);

if(iReadSize > 0)
{
//流送入库
PSTREAM_DataInput(gPushHandlegStreamIdgszReadBufferiReadSize);
}
else
{
//文件结束从头读
fseek(gInputFile0SEEK_SET);
}
XThread::Sleep(20);
}
printf(“线程:%ld 运行结束\n“XThread::SelfID());
return 0;
}



int main()
{

gInputFile = fopen(INPUT_FILE_NAME “rb“);
if (!gInputFile)
{
printf(“read input file :%s failed!\n“INPUT_FILE_NAME);
return 0;
}

PSTREAM_SetLogCallBack(LogCBFunNULL);

//RTSP/RTP OVER TCP 推流
gPushHandle = PSTREAM_CreatePushHandle(PSTREAM_RTSP_RTP_TCP);

if(!gPushHandle)
{
printf(“PSTREAM_CreatePushHandle Error!\n“);
return 0;
}
//设置消息回调
PSTREAM_SetMsgCallBack(gPushHandleMsgCBFun NULL);



#ifdef PUSH_AAC_ONLY
//添加音视频轨道 这里添加H264轨道
gStreamId = PSTREAM_AddStream(gPushHandle PSTREAM_AUDIO_TYPE_AAC);
#endif


if(gStreamId<0)
{
printf(“PSTREAM_AddStream Error!\n“);
PSTREAM_DestroyPushHandle(gPushHandle);
retu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    9092080  2018-06-07 16:44  PushStream_AAC\bin\Debug\huangdun.264

     文件    4035283  2018-06-17 17:40  PushStream_AAC\bin\Debug\huangdun.265

     文件    1545007  2018-07-29 10:13  PushStream_AAC\bin\Debug\huangdun.aac

     文件      82944  2018-12-03 15:36  PushStream_AAC\bin\Debug\PushStreamDemo_D.exe

     文件     556824  2018-12-03 15:36  PushStream_AAC\bin\Debug\PushStreamDemo_D.ilk

     文件     977920  2018-12-03 15:36  PushStream_AAC\bin\Debug\PushStreamDemo_D.pdb

     文件     229888  2018-12-02 20:27  PushStream_AAC\bin\Debug\PushStream_D.dll

     文件       1926  2018-12-02 17:24  PushStream_AAC\bin\Debug\PushStream_D.exp

     文件    1580196  2018-12-02 20:27  PushStream_AAC\bin\Debug\PushStream_D.ilk

     文件       3680  2018-12-02 17:24  PushStream_AAC\bin\Debug\PushStream_D.lib

     文件    2067456  2018-12-02 20:27  PushStream_AAC\bin\Debug\PushStream_D.pdb

     文件     800000  2018-02-24 11:16  PushStream_AAC\bin\Debug\test_8k_1_16.G711A

     文件       5423  2018-12-02 12:52  PushStream_AAC\Project\PushStreamDemo\PushStreamDemo.vcproj

     文件       1466  2018-12-03 15:44  PushStream_AAC\Project\PushStreamDemo\PushStreamDemo.vcproj.PC-20180721LUCB.Administrator.user

     文件   10603520  2018-12-03 15:44  PushStream_AAC\PushStream.ncb

     文件        916  2018-12-02 20:30  PushStream_AAC\PushStream.sln

    ..A..H.     73728  2018-12-03 15:44  PushStream_AAC\PushStream.suo

     文件       8142  2018-12-02 20:19  PushStream_AAC\src\PushStreamDemo\IPushStream.h

     文件       4350  2018-12-03 15:35  PushStream_AAC\src\PushStreamDemo\main.cpp

     文件       2536  2018-11-25 16:12  PushStream_AAC\src\PushStreamDemo\Xbase\Timer.cpp

     文件       2076  2018-11-25 16:43  PushStream_AAC\src\PushStreamDemo\Xbase\Timer.h

     文件       1653  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XCritical.cpp

     文件        763  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XCritical.h

     文件       3472  2018-11-25 10:44  PushStream_AAC\src\PushStreamDemo\Xbase\XDefine.h

     文件       3028  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XEvent.cpp

     文件        989  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XEvent.h

     文件       1880  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XMutex.cpp

     文件       1124  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XMutex.h

     文件        536  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XNoncopyable.h

     文件       3944  2018-11-25 08:12  PushStream_AAC\src\PushStreamDemo\Xbase\XThread.cpp

............此处省略27个文件信息

评论

共有 条评论