Live555学习之(一)-------Live555的基本介绍

  前一阵子,因为项目需要,研究了一下Live555开源框架,研究的不是很深入,基本上把Live555当做API用了一下,但是毕竟也是本人看的第一个开源框架,在此记录总结一下。

  Live555是一个实现了RTSP协议的开源流媒体框架,Live555包含RTSP服务器端的实现以及RTSP客户端的实现。Live555可以将若干种格式的视频文件或者音频文件转换成视频流或者音频流在网络中通过RTSP协议分发传播,这便是流媒体服务器最核心的功能。Live555支持以下几种文件格式的流化:  

  • A MPEG Transport Stream file (with file name suffix ".ts")
  • A Matroska or WebM file (with filename suffix ".mkv" or ".webm")
  • An Ogg file (with filename suffix ".ogg", "ogv", or ".opus")
  • A MPEG-1 or 2 Program Stream file (with file name suffix ".mpg")
  • A MPEG-4 Video Elementary Stream file (with file name suffix ".m4e")
  • A H.264 Video Elementary Stream file (with file name suffix ".264")
  • A H.265 Video Elementary Stream file (with file name suffix ".265")
  • A VOB video+audio file (with file name suffix ".vob")
  • A DV video file (with file name suffix ".dv")
  • A MPEG-1 or 2 (including layer III - i.e., ‘MP3‘) audio file (with file name suffix ".mp3")
  • A WAV (PCM) audio file (with file name suffix ".wav")
  • An AMR audio file (with file name suffix ".amr")
  • An AC-3 audio file (with file name suffix ".ac3")
  • An AAC (ADTS format) audio file (with file name suffix ".aac")

  经过Live555流化后的视频流或者音频流可以通过实现了标准RTSP协议的播放器(如VLC)来播放。

  Live555的官网:http://www.live555.com/,下载Live555的源代码:http://www.live555.com/liveMedia/public/

下载源码后解压得到live目录,目录结构如下,lib目录是编译后产生的目录:

主要使用其中的四个目录,分别对应Live555的四个库:

    BasciUsageEnvironment目录,生成的静态库为libBasicUsageEnvironment.lib,这个库主要包含一些基本数据结构以及工具类的定义

    groupsock目录,生成的静态库为libgroupsock.lib,这个库主要包含网络相关类的定义和实现

    liveMedia目录,生成的静态库为libliveMedia.lib,这个库包含了Live555核心功能的实现

    UsageEnvironment目录,生成的静态库为libUsageEnvironment.lib,这个库主要包含对BasicUsageEnvironment库中一些类的实现

  mediaServer目录中包含Live555流媒体服务器的标准示例程序,运行live555MediaServer.exe后出现如下界面:

   

  在mediaServer目录中放入你的媒体文件,如test.mp3,在VLC播放器中选择“媒体”-“打开网络串流”,然后输入 rtsp://127.0.0.1:8554/test.mp3 就可以播放刚才的mp3文件了。

  proxyServer目录中是live555实现的代理服务器的例子程序,这个程序可以从其他的流媒体服务器(如支持RTSP的摄像机)取实时的视频流然后转发给多个RTSP客户端,这个程序很有用,可以转发摄像机的实时视频流。

  testProgs目录中包含很多的测试例子程序,我经常用的是testOnDemandRTSPServer.cpp,我是从这个例子程序开始学习Live555的。

时间: 2024-10-13 00:26:27

Live555学习之(一)-------Live555的基本介绍的相关文章

Live555学习之(七)---------- Live555实现h264视频的点播

上一篇介绍了Live555如何实现录像功能,我录的是H264编码的视频文件.在<Live555的基本介绍>这一篇中,我介绍说把mp3文件放到live/mediaServer目录下,然后使用Live555流化,就可以通过vlc去点播该文件.那么我们把录好的h264文件能否被Live555流化然后使用VLC点播呢?经试验,发现是不行的. 然后我就对比VLC去请求Live555流化mp3文件和h264文件的过程,发现了原因:在请求h264文件时返回的SDP信息中,总出现"a=range:n

Live555学习之一 源代码编译

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

(转)live555学习笔记-UsageEnvironment和TaskScheduler

2011-12-6阅读1264 评论1 一直想学习流媒体服务器的设计,这几天有点时间,看了一下live555的源代码.live555是一个开源的跨平台流媒体服务器,使用编程语言是C++.将现阶段学习笔记总结如下,其实关键是要弄明白几个类的作用和它们之间的关系: 一.UsageEnvironment类以及其派生类的继承关系 基类UsageEnvironment是一个抽象类,它主要是定义了一些接口函数(纯虚函数)包括错误代码/结果消息系列函数,重载输出操作符系列函数等:以及定义重要的数据成员fSch

Memcache学习总结2-Memcache的使用基本介绍

Memcache学习总结2-Memcache的使用基本介绍 上一次总结中我们已经安装部署好了Memcached,并且把PHP扩展Memcache也安装好了,这一节我们详细学习一下PHP扩展Memcache.Memcache客户端包含两组接口,一组是面向过程的接口,一组是面向对象的接口,具体可以参考PHP手册:http://php.net/manual/zh/book.memcache.php . 我们为了简单方便,就使用面向对象的方式,也便于维护和编写代码,那我们先来一段示例代码吧. Memca

java SE学习之线程同步(详细介绍)

       java程序中可以允许存在多个线程,但在处理多线程问题时,必须注意这样一个问题:               当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量时,那么这个程序是该如何执行?              也就是先访问这个变量还是先修改这个变量.              在学习线程的这段时间里,我也一直被这个问题所困扰!但是今天终于算是搞明白了.              于是将这些好的列子一一列举出来,分享一下. (1)什么是线程同步 ?      

一步一步学习SignalR进行实时通信_1_简单介绍

原文:一步一步学习SignalR进行实时通信_1_简单介绍 一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 前言 本来前几个月想写一系列的关于SignalR的文章,但是由于在做项目,时间非常的紧急,花了1天的时间大致了解了下SignalR,并实现了个在线聊天的小功能,本来记录一系列关于SignalR的文章,没想到写了MVC5使用SignalR进

【web开发学习笔记】Structs2 Result学习笔记(一)简单介绍

Structs2 Result学习笔记(一)简单介绍 问题一 <struts> <constant name="struts.devMode" value="true" /> <package name="resultTypes" namespace="/r" extends="struts-default"> <action name="r1"

Ext学习-基础概念,核心思想介绍

1.目标   本阶段的目标是通过学习一些基础知识来对EXTJS有个整体的了解,知道EXTJS的基础语法,核心设计思想等等 2.内容   1.基础部分学习   2.EXTJS类系统介绍   3.EXTJSMVC结构介绍   4.EXTJS数据模型介绍 3.学习流程           1.在学习之前,首先要对javaScript的基础要有个基础了解,如果不熟悉,请参考:javaScript基础之闭包   2[可选]学习了解一下EXTJS的一些常用功能:http://ziren.org/extjs/

【转载】JMeter学习(一)工具简单介绍

JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等.JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能.     同时,JMeter可以帮助你对你的应用程序进行回归测试.