首页 > 其他 > 详细

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

时间:2014-11-22 16:04:39      阅读:357      评论:0      收藏:0      [点我收藏+]


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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!