Mediastreamer2 是一个功能强大且小巧的流引擎,专门为音视频电话应用而开发。这个库为linphone中所有的接收、发送多媒体流提供处理,包括音/视频捕获,编码和解码,渲染。

特性:

  1. 接收、发送RTP数据包。
  2. 支持如下的音视频编解码格式:音频speex, G711, GSM, iLBC, AMR, AMR-WB, G722, SILK, G729 视频: H263, theora, MPEG4, H264 and VP8.
  3. 捕获摄像头的YUV图片格式(基于平台独立的API)。
  4. 立体声输出。
  5. 回声消除,基于speex库 和Android上的webrtc AEC机制。
  6. 支持音频参数均衡。
  7. 具有IEC NAT穿越动能。
  8. 自适应比特率控制算法:根据接收的RTCP反馈信息自动适应编码速率。

mediastream2以扩展插件的形式支持H264, ILBC, SILK, AMR, AMR-WB and G729。

Mediastreamer2可以使用动态插件进行扩展,当前可用的插件有h264,ILBCt和AMR
可移植性: linux/x86、linux/x86_64、Embedded linux:ARM and Blackfin 、windows XP、Vista and 7、 Mac Os X、Google Android

设计和原理:

mediastream2中每一个处理实体都包含一个MSFilter结构,每一个MSFiter有一个或者若干个输入和输出,通过这些输入和输出可以将各个MSFilter连接起来。

下面为一个简单的例子:

    1. MSSpeexDec:接收输入的音频数据包(假设音频用speex编码),解码并输出到下一个MSFilter。
    2. MSRtpRecv --> MSSpeexDec --> MSFileRec

媒体处理中的调度对象为MSTicker,它一个独立的线程,其每10ms被唤醒一次,然后它会处理他所管理的媒体链的数据。几个MSTicker可以同时运行,例如,一个负责处理音频,一个负责处理视频,或在不同的处理器中运行不同的MSTicker。

使用简单:
如果你想创建音视频流,要调用audiostream.h和videostream.h的定义来创建音视频流。
如果你想添加mediastreamer2的功能,实现一个mediastreamer2 filter是非常简单的,因为mediastreamer2是非常轻量级的封装。
由于mediastreamer2是一个轻框架,工程师可以集中精力在于:图像/信号算法的实现。

mediastreamer2适用于嵌入式系统
mediastreamer2是纯C开发的
mediastreamer2可以用gcc编译
mediastreamer2最小依赖只需oRTP和libc。其他(ffmpeg, speex, alsa...)根据需要添加。
由于是插件框架,mediastreamer2可以通过硬件codecs接口扩展,如video codecs dsp
ediastreamer2是轻量级的。例如,在linux/x86平台上,使用共享库的时全功能大约只有800k

流媒体学习一-------mediastreamer2 的简介的更多相关文章

  1. C#.NET学习笔记1---C#.NET简介

    C#.NET学习笔记1---C#.NET简介 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com -------------- ...

  2. python学习第一讲,python简介

    目录 python学习第一讲,python简介 一丶python简介 1.解释型语言与编译型语言 2.python的特点 3.python的优缺点 二丶第一个python程序 1.python源程序概 ...

  3. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  4. Linux学习笔记-Linux系统简介

    Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...

  5. 『NiFi 学习之路』简介

    『NiFi 学习之路』简介 『NiFi 学习之路』入门 -- 下载.安装与简单使用 『NiFi 学习之路』资源 -- 资料汇总 『NiFi 学习之路』把握 -- 架构及主要组件 『NiFi 学习之路』 ...

  6. Window脚本学习笔记之BAT简介

    本篇文章不是直接讲技术,而是对我自己学习这些年来的一番感触和简单的介绍,其间也穿插着一些基本的知识,若是学习技术者可跳过,亦不妨碍学习其他. BAT简介 BAT是Windows的批处理脚本,即以后缀“ ...

  7. JAVA NIO学习笔记1 - 架构简介

    最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...

  8. Spring学习系列(一) Spring简介

    Spring简介 之前一直想写点东西,可一直没有开始实施,各种原因都有,最大原因可能还是自己太懒了,嘿嘿.最近在看Spring in action这本书,为了能让自己坚持下去把书看完,这次决定同步的在 ...

  9. hibernate学习一(hibernate简介与准备)

    一.hibernate简介 Hibernate是一个开放源代码的对象-关系映射(Object/Relational Mapping 即 ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJ ...

随机推荐

  1. BZOJ3931 [CQOI2015]网络吞吐量(最大流)

    没啥好说的,有写过类似的,就是预处理出最短路上的边建容量网络. #include<cstdio> #include<cstring> #include<queue> ...

  2. BZOJ3118 : Orz the MST

    对于树边显然只需要减少权值,对于非树边显然只需要增加权值 设i不为树边,j为树边 X[i]:i增加量 X[j]:j减少量 C[i]:修改1单位i的代价 对于每条非树边i(u,v),在树上u到v路径上的 ...

  3. TYVJ P1022 进制转换 Label:坑

    背景 太原成成中学第3次模拟赛 第2道 描述 对于十进制整数N,试求其-2进制表示.例如,因为 1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13 ,所以(-13) ...

  4. Vijos 1061 迎春舞会之三人组舞(DP)

    题目链接 经典DP问题,通过问题,看出结论,然后倒序,然后注意条件. #include <cstdio> #include <cstring> #include <ios ...

  5. oracle系列--第三篇 Oracle的安装

    在安装之前,我先说说我的电脑的配置: OS : Windows 7 32bit CPU : 3GHz Memory : 2GB Desk : 320GB ======================= ...

  6. 【C语言】03-第一个C程序代码分析

    前面我们已经创建了一个C程序,接下来分析一下里面的代码. 项目结构如下: 一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下 ...

  7. Solve error: 'class vtkImageActor' has no member named 'SetInput'

    Replacement of SetInput() with SetInputData() and SetInputConnection() someFilter->SetInput(someR ...

  8. 在client类中设置访问属性 address,business和individua

    php 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好.其实际的目的, 是为了有的场合想用多继承,但PHP又没多继承 ,于是就发明了这样的一个东西. Traits可以理解为一组能 ...

  9. 针对css3特性浏览器兼容 封装less

    //--------------------------------------------------- // LESS Prefixer //--------------------------- ...

  10. 解决main No MyBatis mapper was found in 的警告

    在集成Spring + mybaits时出现以下警告 org.mybatis.spring.mapper.MapperScannerConfigurer$Scanner.main No MyBatis ...