码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-11-22 16:06:45      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:android   style   io   os   使用   sp   数据   on   问题   


    当时真的是需要这样的一个博文来指导做这个功能模块,可惜网上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播放出来;

    至此大概框架就出现了。

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

标签:android   style   io   os   使用   sp   数据   on   问题   

原文地址:http://blog.csdn.net/u012377333/article/details/41381675

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!