糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Live555 —— vs编译“LIVE555 Media Server“源码

Live555 —— vs编译“LIVE555 Media Server“源码

时间:2018-08-23 05:53:56

相关推荐

Live555 —— vs编译“LIVE555 Media Server“源码

简介

     Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输,是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+ 、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

     Live555具体有四个技术模块:

          Live555 Media Server - 媒体服务器

          Live555 Streaming Media - 流媒体

          LiveCasterTM - 多播 MP3 流媒体服务器

          djifix - 修复损坏的DJI视频文件

Live555 Media Server 简介

     源码编译结果如下:

     Live555 Streaming Media整体框架:

          UsageEnvironment模块是对系统环境的抽象,包括抽象类UsageEnvironment和TaskScheduler。UsageEnvironment主要用于消息的输入输出和用户交互功能;TaskScheduler实现事件的异步处理、事件处理函数的注册等,它通过维护一个异步读取源实现对诸如通信消息到达等事件的处理,通过使用DelayQueue实现对其他注册函数的延时调度。该模块还包含一个HashTable类,在整个项目中都可以用到它。程序设计者通过自定义该抽象了类UsageEnvironment和TaskScheduler类的子类,就可以在特定环境(如GUI环境)中运行,不需要进行过多的修改。

          BasicUsageEnvironment模块是UsageEnvironment的一个控制台应用的实现。它针对控制台的输入输出和信号响应进行具体实现。

          GroupSock模块用于实现数据包的发送和接收。GroupSock主要被设计用以支持多播,但它也完全支持单播通信。

          LiveMedia模块是Live555最重要的模块。该模块声明了一个抽象类Medium,其他所有类都派生自该类,下面简要介绍这些类:

               1、RTSPClient:该类实现RTSP请求的发送和响应的解析,同时根据解析的结果创建对应的RTP会话。

               2、MediaSession:用于表示一个RTP会话,一个MediaSession可能包含多个子会话(MediaSubSession),子会话可以是音频子会话、视频子会话等。

               3、RTCPInstance:该类实现RTCP协议的通信。

               4、Source和Sink:这两个概念类似DirectShow中的Filter。Source抽象了数据源,比如通过RTP读取数据。Sink是数据消费者的抽象,比如把接收到数据存储到文件,该文件就是一个Sink。数据的流动可能经过多个Source和Sink。MediaSink是各种类型的Sink的基类,MediaSource是各种类型Source的基类,各种类型的流媒体格式和编码的支持即是通过对这两个类的派生实现的。Source和Sink通过RTP子会话(MediaSubSession)联系在一起。

Live555 Media Server 编译

     1、下载Live Media Server源码

     2、创建Vs解决方案

     3、解决方案下分别添加静态库工程、控制台应用工程

          下图为源码解压后效果。  附:解压文件出错:无法创建符号链接

          解决方案下创建静态库工程:BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment、WindowsAudioInputDevice

          解决方案下创建控制台应用工程:proxyServer、mediaServer

          将源码每个工程名文件夹下的除include目录外的.cpp和.h文件,拷贝到新创建的各新工程名下。如下图只拷贝源码目录下的红框内的文件到新工程中。

     4、安装OpenSSL并配置各工程

          (1)、下载OpenSSL并安装

               如下图,下载后正常安装即可,结束后在安装目录会有include、lib、bin等文件。

          注意:若不想安装则在编译报错工程中加入预处理宏即可:NO_OPENSSL

          (2)、配置工程

               将下面的配置加入到所有新创建的静态库工程配置中:

// 右键属性 - C/C++ - 常规 - 附加包含目录:(注意,下面的include目录均为源码的路径,自行配置)../../live/BasicUsageEnvironment/include../../live/groupsock/include../../live/liveMedia/include../../live/UsageEnvironment/include// 右键属性 - C/C++ - 预处理器 - 预处理器定义:_CRT_SECURE_NO_DEPRECATE_WINSOCK_DEPRECATED_NO_WARNINGSNO_GETIFADDRS_CRT_NONSTDC_NO_DEPRECATE// 右键属性 - C/C++ - 预编译头 - 预编译头:不使用预编译头

               将下面的配置加入到所有新创建的控制台应用工程配置中:

// 右键属性 - C/C++ - 常规 - 附加包含目录:(注意,下面的include目录均为源码的路径,自行配置)../../live/BasicUsageEnvironment/include../../live/groupsock/include../../live/liveMedia/include../../live/UsageEnvironment/includeD:\Program Files\OpenSSL-Win64\include// 为OpenSSL头文件目录。(若上面4.1选择不安装则不需本行)// 右键属性 - C/C++ - 预处理器 - 预处理器定义:_CRT_SECURE_NO_DEPRECATE_WINSOCK_DEPRECATED_NO_WARNINGSNO_GETIFADDRS_CRT_NONSTDC_NO_DEPRECATE// 右键属性 - C/C++ - 预编译头 - 预编译头:不使用预编译头// 右键属性 - 链接器 - 常规 - 附加库目录:../x64/Debug// 其他静态库工程生成路径D:\Program Files\OpenSSL-Win64\lib// OpenSSL库目录。(若上面4.1选择不安装则不需本行)// 右键属性 - 链接器 - 输入 - 附加依赖项:BasicUsageEnvironment.libgroupsock.libliveMedia.libUsageEnvironment.libWindowsAudioInputDevice.libWs2_32.lib// windows网络库(必须)

     5、编译

          依次编译 BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment、WindowsAudioInputDevice 静态库工程,最终编译 proxyServer、mediaServer 控制台应用。

     6、运行

// mp4转h264文件ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264/*将生成的test.264文件放在mediaServer.exe同个目录下,运行mediaServer.exe然后使用vlc打开上面的流地址:rtsp://192.168.38.1/test.264*/

Live555 Media Server 源码编译工程

如需源码编译好得工程可联系获取。

          

     

关注

笔者 - jxd      (码农总动员)

如果觉得《Live555 —— vs编译“LIVE555 Media Server“源码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。