FireBreath开发实时播放接口(Yate + SIP + FFMPEG + SDL)

当时真的是需要这样的一个博文来指导做这个功能模块,可惜网上FireBreath的资料很少,本身对C++的不是很熟悉,所以一路上是不断尝试和摸索,好在马马虎虎的将这个模块实现了,现在记录下来。

首先说明一点,我们的Yate的 SIP Server和终端的SIP Client以及Android的上面的SIP Client还有Windows PC终端的SIP Client和Linux PC终端的SIP Client都实现了。

所以大家的是建议借助这个现有的条件去实现web service实时播放的功能。

加上刚对FireBreath认识,尝试在这上面调用SIP,RTP,FFMPEG以及SDL。

期间遇到的问题,断断续续在其他的文章里面有一些记录了,不知道为什么,RTP好像用不了,收包的时候导致插件直接挂掉了。后来直接使用的UDP,去掉了前面的12个字节。

通过FireBreath注册了3个接口给界面的JS调用,SipRegister();SipInvite();SipBye();

其余的功能就是在这三个函数下面启动的线程去完成的,在SipRegister里面调用一个接受SIP Message的线程SipMonitor;在SipMonitor里面接受到200OK的时候,也就是EXOSIP ANSWER里面创建了AudioRecv、VideoRecv、AudioPlay和VideoPlay的线程;

SipInvite就是发送Invite消息,请求获取实时视频数据;

SipBye是发送Bye消息,请求挂断本次视频请求;

在AudioRecv和VideoRecv线程里面进行收取AudioData和VideoData,并将他们写入环形缓冲区AudioCirBuf和VideoCirBuf;

在AudioPlay和VideoPlay线程里面将环形缓冲区AudioCirBuf和VideoCirBuf的数据取出来通过FFMPEG解码,通过SDL播放出来;

至此大概框架就出现了。

时间: 2024-08-18 16:53:43

FireBreath开发实时播放接口(Yate + SIP + FFMPEG + SDL)的相关文章

mac 下基于firebreath 开发多浏览器支持的浏览器插件

首先要区分什么是浏览器扩展和浏览器插件;插件可以像本地程序一样做的更多 一. 关于 firebreath http://www.firebreath.org firebreath 是一个夸平台,夸浏览器的,开发浏览器插件框架: 利用firebreath开发的浏览器插件,可以在多浏览器上安装:并且提供多种平台下的解决方案比如mac,windows 二. 关于mac 使用 firebreath 开发浏览器插件 官方教程 http://www.firebreath.org/display/docume

Amzon MWS API开发之订单接口

Amzon MWS API开发之订单接口 Amazon订单接口是Amazon MWS 开发接口中的一大块,我们可以通过接口调用来获得订单数据. 在调用接口之前,首先我们要获得相关店铺商家的店铺密钥等信息.如下: 在此我将所有信息定义在一个类中,采用序列化的方式,方便存取值. 1 /// <summary> 2 /// 账户信息 3 /// </summary> 4 [Serializable] 5 public class AccountConfig : BaseConfig<

PHP微信公众平台开发1 配置接口

1.简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动. 2.通讯机制 3.注册微信公众平台账号 注册地址:https://mp.weixin.qq.com 4.服务器端配置 4.1 示例代码设置 微信公众平台提供了一个php示例代码: http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip 下载下来,解压缩,打开编辑.

开发实时查询公交的APP软件的重要性

公交是最实惠的出行工具,很多民众出行都是偏向于选择公交,但是等公交确实不好受,如果你时间充足可以慢慢等,但是赶时间的话,这滋味真的不好受.如何让自己更舒心地等公交呢?创业者们就想到开发一个可以实时查询公交的APP软件.通过这个APP软件,用户可以实时查询到公交所在的位置,以及然后根据自己的时间规划性出门,提前出门等公交,这样就可以避免错过公交或者过长时间等公交,类似的实时查询公交APP软件有掌上公交.搜狗公交等.这就是为什么那么多创业者想要开发实时查询公交APP软件的原因. 现在的实时查询公交A

最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器

本文补充记录<最简单的基于FFMPEG+SDL的视频播放器>中的两个例子:FFmpeg视频解码器和SDL像素数据播放器.这两个部分是从视频播放器中拆分出来的两个例子.FFmpeg视频解码器实现了视频数据到YUV数据的解码,而SDL像素数据播放器实现了YUV数据的显示.简而言之,原先的FFmpeg+SDL视频播放器实现了: 视频数据->YUV->显示器 FFmpeg视频解码器实现了: 视频数据->YUV SDL像素数据播放器实现了: YUV->显示器 FFmpeg视频解码

刚接触开发板之接口接线工具

ARM开发板本质上就是个小型的计算机系统,因此学习初学开发板可以跟PC电脑做对比. 新买的电脑需装系统(厂家预装或个人自己装)然后才能使用.同样的道理,开发板也必须先烧写软件之后,才能使用.PC电脑可以通过光盘装系统,用键盘.显示器使用:而对于开发板,可以通过JTAG接口烧写软件,使用串口作为输入.输出. PC电脑一般有CPU.内存.硬盘.网卡.并口串口等,对应的,开发板内也有CPU.内存.Flash(相当于PC的硬盘).网卡.串口等. 1.接口接线: 1>并口:用排线连接开发板的JTAG接口和

准备开发开放API接口

准备开发APP开放接口,允许JQUERY直接调用http://blog.csdn.net/wuxiangege/article/details/52238968 SIGN的设计与实现http://blog.csdn.net/fengshizty/article/details/48754609 优秀API设计的十大原则 https://wenku.baidu.com/view/7ec95d53102de2bd970588be.html

最简单的基于FFMPEG+SDL的音频播放器:拆分-解码器和播放器

本文补充记录<最简单的基于FFMPEG+SDL的音频播放器>中的两个例子:FFmpeg音频解码器和SDL音频采样数据播放器.这两个部分是从音频播放器中拆分出来的两个例子.FFmpeg音频解码器实现了视频数据到PCM采样数据的解码,而SDL音频采样数据播放器实现了PCM数据到音频设备的播放.简而言之,原先的FFmpeg+SDL音频播放器实现了: 音频数据->PCM->音频设备 FFmpeg音频解码器实现了: 音频数据->PCM SDL音频采样数据播放器实现了: PCM->

webservice 之 使用cxf开发WebService服务器端接口

摘要:webservice 不是一种新技术,它是一种跨平台,跨语言的规范,用于不同平台,不同语言开发应用之间的交互. cxf:是java主流的WebService实现框架. 接下来开始 使用cxf开发WebService服务器端接口 1.新建一个maven项目: 2. 项目用jdk1.7(因为1.7有webservice的默认实现)项目结构如: 3. 首先新建接口,HelloWorld.java: package com.wh.webservice; import javax.jws.WebSe