Live555主要有四个类库:
libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib
将这四个类库以及相关的头文件导入VC++2010之后,可以轻松实现网络直播系统。
在这里直接贴上完整代码,粘贴到VC里面就可以运行。
注:程序运行后,使用播放器软件(VLC Media Player,FFplay等),打开URL:rtp://239.255.42.42:1234,即可收看直播的视频。
// 网络直播系统.cpp : 定义控制台应用程序的入口点。 // 雷霄骅 // 中国传媒大学/数字电视技术 // leixiaohua1020@126.com #include "stdafx.h" #include "liveMedia.hh" #include "BasicUsageEnvironment.hh" #include "GroupsockHelper.hh" //#define IMPLEMENT_RTSP_SERVER //#define USE_SSM 1 #ifdef USE_SSM Boolean const isSSM = True; #else Boolean const isSSM = False; #endif #define TRANSPORT_PACKET_SIZE 188 #define TRANSPORT_PACKETS_PER_NETWORK_PACKET 7 UsageEnvironment* env; char const* inputFileName = "test.ts"; FramedSource* videoSource; RTPSink* videoSink; void play(); // forward int main(int argc, char** argv) { // 首先建立使用环境: TaskScheduler* scheduler = BasicTaskScheduler::createNew(); env = BasicUsageEnvironment::createNew(*scheduler); // 创建 'groupsocks' for RTP and RTCP: char const* destinationAddressStr #ifdef USE_SSM = "232.255.42.42"; #else = "239.255.42.42"; // Note: 这是一个多播地址。如果你希望流使用单播地址,然后替换这个字符串与单播地址 #endif const unsigned short rtpPortNum = 1234; const unsigned short rtcpPortNum = rtpPortNum+1; const unsigned char ttl = 7; // struct in_addr destinationAddress; destinationAddress.s_addr = our_inet_addr(destinationAddressStr); const Port rtpPort(rtpPortNum); const Port rtcpPort(rtcpPortNum); Groupsock rtpGroupsock(*env, destinationAddress, rtpPort, ttl); Groupsock rtcpGroupsock(*env, destinationAddress, rtcpPort, ttl); #ifdef USE_SSM rtpGroupsock.multicastSendOnly(); rtcpGroupsock.multicastSendOnly(); #endif // 创建一个适当的“RTPSink”: videoSink = SimpleRTPSink::createNew(*env, &rtpGroupsock, 33, 90000, "video", "mp2t", 1, True, False /*no 'M' bit*/); const unsigned estimatedSessionBandwidth = 5000; // in kbps; for RTCP b/w share const unsigned maxCNAMElen = 100; unsigned char CNAME[maxCNAMElen+1]; gethostname((char*)CNAME, maxCNAMElen); CNAME[maxCNAMElen] = '\0'; #ifdef IMPLEMENT_RTSP_SERVER RTCPInstance* rtcp = #endif RTCPInstance::createNew(*env, &rtcpGroupsock, estimatedSessionBandwidth, CNAME, videoSink, NULL /* we're a server */, isSSM); // 开始自动运行的媒体 #ifdef IMPLEMENT_RTSP_SERVER RTSPServer* rtspServer = RTSPServer::createNew(*env); if (rtspServer == NULL) { *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n"; exit(1); } ServerMediaSession* sms = ServerMediaSession::createNew(*env, "testStream", inputFileName, "Session streamed by \"testMPEG2TransportStreamer\"", isSSM); sms->addSubsession(PassiveServerMediaSubsession::createNew(*videoSink, rtcp)); rtspServer->addServerMediaSession(sms); char* url = rtspServer->rtspURL(sms); *env << "Play this stream using the URL \"" << url << "\"\n"; delete[] url; #endif *env << "开始发送流媒体...\n"; play(); env->taskScheduler().doEventLoop(); return 0; // 只是为了防止编译器警告 } void afterPlaying(void* /*clientData*/) { *env << "...从文件中读取完毕\n"; Medium::close(videoSource); // 将关闭从源读取的输入文件 play(); } void play() { unsigned const inputDataChunkSize = TRANSPORT_PACKETS_PER_NETWORK_PACKET*TRANSPORT_PACKET_SIZE; // 打开输入文件作为一个“ByteStreamFileSource": ByteStreamFileSource* fileSource = ByteStreamFileSource::createNew(*env, inputFileName, inputDataChunkSize); if (fileSource == NULL) { *env << "无法打开文件 \"" << inputFileName << "\" 作为 file source\n"; exit(1); } videoSource = MPEG2TransportStreamFramer::createNew(*env, fileSource); *env << "Beginning to read from file...\n"; videoSink->startPlaying(*videoSource, afterPlaying, videoSink); }
完整工程下载地址:http://download.csdn.net/detail/leixiaohua1020/6272839
相关推荐
C++ Live555 类库实现的网络直播系统。 Live555主要有四个类库: libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib 将这四个类库以及相关的头文件导入VC++2010之后,...
这是使用live555实现的一个推流的小框架,其详细的说明见作者的博客《 使用live555实现实时流的推流服务器》
读内存live555读内存(直播)实现,主要是两个修改的cpp文件
1、使用FFMPEG进行编码(ffmpeg版本为ffmpeg-5.0) 2、使用LIVE555建立RTSP服务器(live555版本为live.2022.02.07) 实现实时桌面视频流,Visual Studio为Visual Studio 2022版本
live555Camera用live555摄像头直播,全源代码,播放时有延时,希望大家改进。
live555流媒体服务 实现视频流直播及视频流点播 vs2013 编译通过
Windows下利用live555实现H264H265实时流RTSP...环境从vs2015改为vs2010,增加了H265的处理,Live555使用了最新版。同时修改unsigned OutPacketBuffer::maxSize = 60000也改在main里面,未对Live555源码做任何变动。
DynamicRTSPServer.cpp live555MediaServer.cpp为mediaServer 中文件修改 H264LiveVideoServerMediaSubsession.cpp H264LiveVideoSource.cpp为创建对话和获取帧类 其他为平台获取帧代码和库
本资源是aac音频通过live555读取内存发送源码,源码本人亲自试用可行,但需要添加进自己项目。
使用live555在windows中实现直播,模拟流未h264裸流,亲测,可用
live555实现TS码流RTSP传输,工程为VS2008工程
采用live555和 ffmpeg结合,通过ffmpeg获取文件视频流(mp4等)或者网络流(rtsp,rtmp等),利用live555 rtsp服务器进行转发。 本例通过ffmpeg实现了两路流的接收和转发,音话同步。 1.获取本地文件1.mp4,然后转发成:...
使用live555 硬件平台:arm9 海思HISI3511 操作系统:linux 功能:嵌入式 视频监控 rtsp
live555断线重连,以及实现基本过程,详细的需要各位进一步填充了
Windows下利用live555实现H264实时流RTSP发送,利用本地文件读入模拟,环境为VS2013。
live555开源的代码只能用于视频的点播,不能用于直播,这里进行了详细的实现直播进行的修改
关于live555的移植和使用 实现从海思共享内存获取数据给rtsp服务器进行流转发
V4L2+FFMPEG+live555实现流媒体服务端
【免费代码】通过live555实现H264 RTSP直播(Windows版).rar
ffmpeg直接采集屏幕;VLC的x264库进行压缩编码;live555作为服务器,侦听554端口,当有连接时,开始录制屏幕并发送。