-
大小: 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\Xba
?????文件???????2076??2018-11-25?16:43??PushStream_AAC\src\PushStreamDemo\Xba
?????文件???????1653??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件????????763??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件???????3472??2018-11-25?10:44??PushStream_AAC\src\PushStreamDemo\Xba
?????文件???????3028??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件????????989??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件???????1880??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件???????1124??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件????????536??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
?????文件???????3944??2018-11-25?08:12??PushStream_AAC\src\PushStreamDemo\Xba
............此處省略27個文件信息
- 上一篇:把H264和音頻流打包成PS流
- 下一篇:基于qt的聊天室
評論
共有 條評論