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 7UsageEnvironment* env;
char const* inputFileName = "test.ts";
FramedSource* videoSource;
RTPSink* videoSink;void play(); // forwardint 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: 这是一个多播地址。如果你希望流使用单播地址,然后替换这个字符串与单播地址
#endifconst 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_SSMrtpGroupsock.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 shareconst unsigned maxCNAMElen = 100;unsigned char CNAME[maxCNAMElen+1];gethostname((char*)CNAME, maxCNAMElen);CNAME[maxCNAMElen] = '\0';
#ifdef IMPLEMENT_RTSP_SERVERRTCPInstance* rtcp =
#endifRTCPInstance::createNew(*env, &rtcpGroupsock,estimatedSessionBandwidth, CNAME,videoSink, NULL /* we're a server */, isSSM);// 开始自动运行的媒体#ifdef IMPLEMENT_RTSP_SERVERRTSPServer* 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



												

使用Live555类库实现的网络直播系统相关推荐

  1. 多校区网络直播系统解决方案

    多校区网络直播系统方案以直播编码器.AuraStone固态流媒体系统.视频汇聚系统为核心所搭建的一套基于IP网络的音视频多地域直播.点播.录制.回看的系统解决方案. 高效快捷的网络直播编码器通过全能视 ...

  2. 网络直播系统的架构,基础版直播间搭建

    直播行业从2013年发展至今,行业逐步规范,功能逐步增加,前几天,斗鱼直播平台宣布自己又获得了一轮融资,此次融资金额近40亿,那么大家想不想知道网络直播系统的架构呢?本文将从三个版块讲述一个简单的网络 ...

  3. 网络直播系统的架构,基础版直播间搭建 1

    直播行业从2013年发展至今,行业逐步规范,功能逐步增加,前几天,斗鱼直播平台宣布自己又获得了一轮融资,此次融资金额近40亿,那么大家想不想知道网络直播系统的架构呢?本文将从三个版块讲述一个简单的网络 ...

  4. 搭建免费网络直播系统

    随着移动互联网的普及与网络直播的火爆,现在人人都能做网络直播,做网络直播可以采用手机APP做直播,也可以采用PC端的软件来做直播.由于手机APP通常是平台绑定的,因此用手机做直播只能在该APP绑定的平 ...

  5. 直播系统之高校‘视频校园’网络电视台应用方案

    视频校园作为一种应用于高校教育领域的网络电视台,主要是以视频应用为主,可以组合学校现有的平台或新建设一个平台与流媒体技术,装音.视频信号实时转换进行直播.'视频校园'可以充分利用学校的各种教育视频资源 ...

  6. 网络电视服务器是什么系统,网络视频直播系统

    网络视频直播系统可以应客户的要求把活动现场的音频或视频信号经压缩后,传送到多媒体服务器上,在Internet上供广大网友或授权特定人群收听或收看. 现在网络直播系统分:直播软件或是硬件直播,硬件直播的 ...

  7. 低延时直播系统开发技术方案

    直播系统开发 背景和需求 在直播系统开发刚刚兴起时,直播中的互动环节较少,主播单方面控场,因此延迟十几秒对用户体验影响较小.常见的直播大部分采用RTMP.HLS.FLV协议,技术成熟.兼容性较好.支持 ...

  8. 直播系统开发应有的引流功能

    相信大家都能看到了网络直播的盈利能力.网络直播系统定制开发也成为了新的发展趋势.很多人和企业都看中了网络直播的潜力.不过,网络直播系统定制开发的对于技术要求很高否则直播软件开发出来后变现赚钱是非常困难 ...

  9. 政府怎么应用视频直播系统?

    政府怎么应用视频直播系统? 随着计算机网络的普及以及流媒体技术的发展,通过在高速互联网和局域网内实现高质量的会议直播.电视直播等已经成为政务信息化的必然发展趋势.当前部分政府或地方新闻网通过图文直播的 ...

最新文章

  1. APP推广方法-导图
  2. seo黑帽劫持用的php,黑帽seo 论坛:黑帽seo防止网站被k的js劫持跳转代码
  3. PHP读取数据库并按照中文名称进行排序实现代码
  4. python的表达式范围怎么写_python表达式
  5. DPDK examples rxtx_callbacks完全注释
  6. 搜狗CEO王小川:很多语音识别公司在AI领域掉进了陷阱
  7. java adt eclipse_Eclipse安装ADT插件
  8. lua 令牌桶 源码_Redis和Lua脚本(实现令牌桶限流)
  9. 无心剑英译许巍《温暖》
  10. 计算机驱动程序的安装过程,u盘驱动程序安装,教您如何安装u盘驱动程序
  11. windows进程详解
  12. IC - 什么是数字IC设计?
  13. 如何申请百度API Key
  14. Word2vec 计算两个文本之间相似度
  15. 去除眼袋(画笔涂抹法)
  16. csdn博客使用反馈,bug
  17. 面试季,各大厂真实面试题拿走不谢
  18. 代码坏的味道07:依恋情结(Feature Envy)
  19. 无人机开源项目_8个开源无人机项目
  20. android网页版app,LOFTER网页版

热门文章

  1. UVA12043 Divisors【欧拉筛法】
  2. CSP202009-2 风险人群筛查(100分)【序列处理】
  3. UVA10696 f91【数学函数+打表】
  4. UVA10978 Let's Play Magic! 题解
  5. POJ3748 位操作【位运算+STL】
  6. Linux 命令行 Tricks
  7. 数学归纳法证明时间复杂度
  8. Python 面向对象 —— __init_ 与 __new__
  9. 破解数字游戏 —— 概率篇
  10. 【清单】语言、框架及库的官方文档、examples、tutorials