带video和audio的mediastream.c

在运行mediastream.c之前确保你已经编译了ortpffmpegx264speexmsx264mediastream2,具体编译的东西看我之前的两篇文章编译mediastreamer2ffmpeg

------------------------------------------------------------------------

先稍微了解下mediastreamer2

这个程序没有实现:用2session来分别同时传送视频和音频。

它实现的是:用1个全双工的session来传送视频或者音频,不管是本机还是远端主机,运行的都是同一个程序,一次只能选择一种payload

1 利用mediastreamer2库封装的filter完成:从声卡捕捉声音,编码后通过rtp发送给远端主机,同时接收远端主机发来的rtp包,解码到声卡回放。

filter graph如下:

soundread -> ec -> encoder -> rtpsend

rtprecv -> decode -> dtmfgen -> ec-> soundwrite

2 利用mediastreamer2库封装的filter完成:从摄像头捕捉图像,编码后通过rtp发送给远端主机(有本地视频预览),同时接收远端主机发来的rtp包,解码后视频回放。

filter graph如下:

source -> pixconv -> tee -> encoder-> rtpsend

tee -> output

rtprecv -> decoder -> output

------------------------------------------------------------------------------

程序命令参数

mediastream --local <port> --remote<ip:port> --payload <payload type number>

[ --fmtp <fmtpline>] [ --jitter<miliseconds>]

编译

#gcc mediastream.c  –o mediastream  -lmediastreamer –DVIDEO_ENABLED

 

Audio部分:

PC1 IP: 192.168.1.44

PC2 IP: 192.168.1.45

Pc1#./mediastream --local5010 --remote 192.168.1.45:6010 --payload 110

Pc2#./mediastream --local6010 --remote 192.168.1.44:5010 --payload 110

110是指speex 语音codec

 

Video部分:

Pc1#./mediastream --local5010 --remote 192.168.1.45:6010 --payload 102

Pc2#./mediastream --local6010 --remote 192.168.1.44:5010 --payload 102

Payload 102是指h264编解码方式

-------------出现以下红色的问题------------------------
ortp-message-Using permissive algorithm
ortp-error-videostream.c:No encoder available for payload 102:H264.
ortp-message-Quality indicator : -1.000000

解决方法:编译安装msx264,虽然之前有装x264,但mediastreamer2不知道怎么用x264,必须用msx264把x264封装成mediastreamer2可用的接口,这样就解决了。

msx264 an H.264 plugin for mediastream2/linphone

最终运行结果:大图显示的是远端,右下角的小图是本地预览

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值