一、WebRTC简介
WebRTC是一个开源的实时通信技术,它支持浏览器和原生应用程序之间的实时音频/视频通信。WebRTC为音频和视频的传输提供了支持,也为数据的传输提供了支持,使得开发者可以用较少的代码来实现实时通信的功能。
二、ZLMediaKit WebRTC介绍
ZLMediaKit是一个开源的流媒体服务框架,它深度结合了WebRTC技术,可以快速搭建一个可用的WebRTC服务器。ZLMediaKit WebRTC提供了完整的音频/视频通话功能和数据传输功能,还提供了强大的跨平台能力,支持Windows、Linux、MacOS等多个平台。
三、ZLMediaKit WebRTC的安装与配置
首先,你需要从ZLMediaKit的官网下载安装包(http://www.zlmediakit.com/)。解压后,执行以下命令:
cd ZLMediaKit
./configure
make
make install
安装完成后,你需要在配置文件中设置一些参数。常用的参数有:
//启用WebRTC模块
enable_webrtc=1
//WebRTC监听地址
rtc_server_ip=127.0.0.1
//WebRTC监听端口
rtc_server_port=8080
四、ZLMediaKit WebRTC的实时通信功能
接下来,我们将介绍ZLMediaKit WebRTC的实时通信功能。
1.创建会话
首先,我们需要创建一个WebRTC会话,代码如下:
std::shared_ptr<RTC::WebRTC>makeSession(const std::string& peer_ip, uint16_t peer_port,bool enable_dtls,bool enable_ice){
//创建WebRTC会话
std::shared_ptr<RTC::WebRTC> sess = std::make_shared<RTC::WebRTC>();
//设置对端地址
sess->setPeerAddress(peer_ip,peer_port);
//设置DTLS和ICE是否启用
sess->setEnableDTLS(enable_dtls);
sess->setEnableICE(enable_ice);
return sess;
}
2.创建流媒体服务器
我们需要创建一个流媒体服务器,代码如下:
//创建流媒体服务器
MediaServer server(&logger,&parser);
//设置流媒体服务器监听地址和端口
server.mINIConfig.SetVal(“http.”,”http_port”,”80”);
//设置流媒体服务器存储地址和端口
server.mINIConfig.SetVal(“hls.”,”record_path”,”/data/media”);
server.mINIConfig.SetVal(“hls.”,”record_file_dir”,”./media/live”);
server.mINIConfig.SetVal(“hls.”,”record_file_prefix”,”${app}_${stream}”);
server.mINIConfig.SetVal(“hls.”,”record_type”,”mp4”);
3.创建音频/视频轨道以及数据通道
我们需要创建音频/视频轨道以及数据通道,代码如下:
//创建音频轨道
auto audio_track = std::make_shared<RTC::AudioTrack>();
//创建视频轨道
auto video_track = std::make_shared<RTC::VideoTrack>();
//创建数据通道
auto data_channel = std::make_shared<RTC::DataChannel>();
4.创建数据流
接着,我们需要创建数据流。代码如下:
//创建数据流
auto data_stream = std::make_shared<RTC::DataStream>();
//设置数据流名称
data_stream->setId(0);
//设置数据流是否可靠
data_stream->setReliable(true);
5.添加音频/视频轨道和数据通道
现在我们将音频/视频轨道和数据通道添加到会话中。代码如下:
//添加音频轨道
sess->addTrack(audio_track);
//添加视频轨道
sess->addTrack(video_track);
//添加数据通道
sess->addChannel(data_channel);
6.启动WebRTC传输
现在我们已经准备好了,可以启动WebRTC传输了。代码如下:
//启动WebRTC传输
server.startWebRTC(sess);
//等待会话结束
sess->wait();
//关闭WebRTC服务器
server.stopWebRTC();
五、ZLMediaKit WebRTC的数据传输功能
接下来,我们将介绍ZLMediaKit WebRTC的数据传输功能。
1.创建数据发送者和接收者
首先,我们需要创建数据发送者和接收者。代码如下:
//创建数据发送者
auto sender = std::shared_ptr<RTC::DataSender>(RTC::DataSender::create());
//创建数据接收者
auto receiver = std::shared_ptr<RTC::DataReceiver>(RTC::DataReceiver::create());
2.发送数据
接下来,我们将向数据接收者发送数据。代码如下:
std::string data = “Hello, world!”;
sender->sendData(data);
3.接收数据
接下来,我们将从数据发送者接收数据。代码如下:
std::string data;
receiver->receiveData(data);
std::cout << data << std::endl;
六、ZLMediaKit WebRTC的兼容性
ZLMediaKit WebRTC支持所有标准的浏览器,包括谷歌浏览器、苹果 Safari、火狐浏览器等。
七、总结
通过本文的介绍,我们了解了ZLMediaKit WebRTC的实时通信功能、数据传输功能以及兼容性。通过对ZLMediaKit WebRTC的熟练应用,我们可以快速搭建一个可用的WebRTC服务器,实现音频/视频通话和数据传输等功能。
标签:std,sess,ZLMediaKit,创建,server,用法,WebRTC From: https://blog.51cto.com/u_16159766/6919219