您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

LocalStream.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
  2. function LocalStream(stream, type, eventEmitter, videoType)
  3. {
  4. this.stream = stream;
  5. this.eventEmitter = eventEmitter;
  6. this.type = type;
  7. this.videoType = videoType;
  8. var self = this;
  9. if(type == "audio")
  10. {
  11. this.getTracks = function () {
  12. return self.stream.getAudioTracks();
  13. };
  14. }
  15. else
  16. {
  17. this.getTracks = function () {
  18. return self.stream.getVideoTracks();
  19. };
  20. }
  21. this.stream.onended = function()
  22. {
  23. self.streamEnded();
  24. };
  25. }
  26. LocalStream.prototype.streamEnded = function () {
  27. this.eventEmitter.emit(StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, this);
  28. }
  29. LocalStream.prototype.getOriginalStream = function()
  30. {
  31. return this.stream;
  32. }
  33. LocalStream.prototype.isAudioStream = function () {
  34. return (this.stream.getAudioTracks() && this.stream.getAudioTracks().length > 0);
  35. };
  36. LocalStream.prototype.mute = function()
  37. {
  38. var ismuted = false;
  39. var tracks = this.getTracks();
  40. for (var idx = 0; idx < tracks.length; idx++) {
  41. ismuted = !tracks[idx].enabled;
  42. tracks[idx].enabled = ismuted;
  43. }
  44. return ismuted;
  45. };
  46. LocalStream.prototype.setMute = function(mute)
  47. {
  48. if(window.location.protocol != "https:" ||
  49. this.isAudioStream() || this.videoType === "screen")
  50. {
  51. var tracks = this.getTracks();
  52. for (var idx = 0; idx < tracks.length; idx++) {
  53. tracks[idx].enabled = mute;
  54. }
  55. }
  56. else
  57. {
  58. if(mute === false) {
  59. APP.xmpp.removeStream(this.stream);
  60. this.stream.stop();
  61. }
  62. else
  63. {
  64. APP.RTC.rtcUtils.obtainAudioAndVideoPermissions(["video"],
  65. function (stream) {
  66. APP.RTC.changeLocalVideo(stream, false, function () {});
  67. });
  68. }
  69. }
  70. };
  71. LocalStream.prototype.isMuted = function () {
  72. var tracks = [];
  73. if(this.type == "audio")
  74. {
  75. tracks = this.stream.getAudioTracks();
  76. }
  77. else
  78. {
  79. if(this.stream.ended)
  80. return true;
  81. tracks = this.stream.getVideoTracks();
  82. }
  83. for (var idx = 0; idx < tracks.length; idx++) {
  84. if(tracks[idx].enabled)
  85. return false;
  86. }
  87. return true;
  88. }
  89. LocalStream.prototype.getId = function () {
  90. return this.stream.getTracks()[0].id;
  91. }
  92. module.exports = LocalStream;