-
大小: 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的聊天室
相关资源
- MFC实现rtsp视频流的播放
- C++ 解析rtsp流后返回Iplimage,用Opengl显
- RTSP PUSH tcp udp h264 easydarwin
- C++ MP4v2获取rtsp流并保存为MP4文件
- C++ RTSP/RTP流媒体客户端源码
- RTSP服务器 C语言
- RTSP_Client.c
- RTSP请求客户端
- 最小RTSP服务器,C语言代码
- linux下最小RTSP服务器实现
- RTSP流媒体协议实现源代码 含客户端和
- RTSPRTP服务器+客户端 C++ 源代码
- DSS中的RTSPclientLib程序
- RTSPRTP C++ 源代码
- 将音视频文件转换为rtsp流(live555 媒
- g711a音频文件转aac格式
- mp4v2封装h264 AAC
- 用opencv处理RTSP视频流,其中视频流的
-
超值QT5之mediapla
yer实现RTSP以及本地 - QT+opencv打开RTSP视频流多线程
- QT写成的远程视频监控系统 -RTSPTool
- ffmpeg获取RTSP视频流信息
- web 播放rtsp视频流(附服务端以及使用
- C++ RTSP/RTP流媒体服务器源码
评论
共有 条评论