带video和audio的mediastream.c
2014-02-20 19:12
316 查看
在运行mediastream.c之前确保你已经编译了ortp、ffmpeg、x264、speex、msx264、mediastream2,具体编译的东西看我之前的两篇文章编译mediastreamer2和ffmpeg
------------------------------------------------------------------------
先稍微了解下mediastreamer2
这个程序没有实现:用2个session来分别同时传送视频和音频。
它实现的是:用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
最终运行结果:大图显示的是远端,右下角的小图是本地预览
------------------------------------------------------------------------
先稍微了解下mediastreamer2
这个程序没有实现:用2个session来分别同时传送视频和音频。
它实现的是:用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
最终运行结果:大图显示的是远端,右下角的小图是本地预览
相关文章推荐
- 带video和audio的mediastream.c
- ApiDemos学习知识点之media-MediaPlayer_Audio&MediaPlayer_Video(11)
- 关于RTP/MPEG TRANSPORT STREAM和RTP Audio/Video profile的比较
- PPAPI开发之路(二)在VS 2013上编译media_stream_video例子
- 【Delphi】从内存(MemoryStream)使用WMP(WindowsMediaPlayer)控件播放视频音频(Play Video with WMP from MemoryStream)
- PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI
- -2147220891 (VFW_E_UNSUPPORTED_STREAM) 在 Microsoft.DirectX.AudioVideoPlayback.Video.Open(String f
- Media (DVD, web content, video & audio) playback in Fedora
- Alembik Project: providing transcoding services for different media types (image, audio, video, etc)
- HTML5无插件多媒体Media——音频audio与视频video
- PPAPI开发之路(二)在VS 2013上编译media_stream_video例子
- How to download streaming audio or video media from the internet using the MMS protocol?
- Media Foundation Programming--Enumerate the video or audio device
- PPAPI开发之路(三)通过本地服务发布例子:media_stream_video的PPAPI
- 编译PPAPI的media_stream_video示例
- stagefright框架(七)-Audio和Video的同步
- Html 5 video/audio 格式转换 ogg
- android mediaplay videoview mediacontrol 网络视频
- HTML 5 Audio Video中怎样来插入音频和视频?
- stagefright框架(七)-Audio和Video的同步