标签 webrtc 下的文章

“”

结论
通过对MediaStream的控制,即设置MediaStreamTrack.enabled来实现静音开关效果的切换。

MediaStreamTrack表示流中的单个媒体轨道。通常,这些是音频或视频轨道,但也可以存在其他轨道类型。
MediaStreamTrack.enabled如果为true,则enabled表示允许轨道将其实际媒体呈现到输出。当enabled设置为时false,轨道仅生成空白帧。空的音频帧将每个样本的值设置为0。空的视频帧将每个像素的值设置为黑色。

官方介绍地址:
https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/enabled

MediaStreamTrack接口上的enabled属性是一个布尔值,如果允许轨迹渲染源流,则为true;如果不允许,则为false。这可用于有意使音轨静音。

启用时,轨道的数据从源输出到目的地;否则,输出空帧。

在音频的情况下,禁用的音轨会生成静默帧(即每个采样值为0的帧)。对于视频轨迹,每一帧都完全用黑色像素填充。

从本质上讲,enabled的值表示典型用户对音轨的静音状态的看法,而静音属性表示音轨暂时无法输出数据的状态,例如帧在传输中丢失的情况。

MediaStream.getTracks()返回流中所有的MediaStreamTrack列表。
遍历流中的每个音频轨道,然后设置enabled为true或false,来控制麦克风静音或者取消静音。

var tracks = stream.getTracks();  
tracks.forEach(item => {
    if (item.kind === 'audio') {
        item.enabled = status;
    }
});

WebRTC turn服务器搭建
不使用数据库直接设置密码,同时支持turn和stun二个协议,可以使用TrickleICE工具测试.
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

git clone https://github.com/coturn/coturn.git
cd coturn
./configure --prefix=/usr/local/coturn
sudo make -j && make install
cd /usr/local/coturn/bin
./turnserver -a --no-tls --no-dtls -u testuser:testpwd -r myrealm -v
./turnutils_peer -v
./turnutils_uclient -u testuser -w testpwd -e 192.168.0.100 -r 3480 192.168.0.100

搭建coturn stun/turn 服务器

./turnserver -a --no-tls -u testuser:testpwd -r myrealm -v --min-port 60000 --max-port 62000 --external-ip xxx.xxx.xxx.xxx -o --no-stun --no-tcp --no-tls

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 测试的时候,会提示701错误,实际测试不影响使用的.

另外,在公网上测试webrtc的时候,需要注意的一个问题是, 在answer端,需要先准备后视频和rtcpeer,不要等到offer sdp过来的时候再去打开视频,有可能会导致连不上.也是无意中发现这个问题的.

在手机端的时候,一定要在video元素里面加上autoplay,不然不会自动播放的,还以为没有连接成功.