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

LargeVideo.web.js 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* @flow */
  2. import PropTypes from 'prop-types';
  3. import React, { Component } from 'react';
  4. import { Watermarks } from '../../base/react';
  5. import { VideoQualityLabel } from '../../video-quality';
  6. import { RecordingLabel } from '../../recording';
  7. declare var interfaceConfig: Object;
  8. /**
  9. * Implements a React {@link Component} which represents the large video (a.k.a.
  10. * the conference participant who is on the local stage) on Web/React.
  11. *
  12. * @extends Component
  13. */
  14. export default class LargeVideo extends Component<*> {
  15. static propTypes = {
  16. /**
  17. * True if the {@code VideoQualityLabel} should not be displayed.
  18. */
  19. hideVideoQualityLabel: PropTypes.bool
  20. };
  21. /**
  22. * Implements React's {@link Component#render()}.
  23. *
  24. * @inheritdoc
  25. * @returns {ReactElement}
  26. */
  27. render() {
  28. return (
  29. <div
  30. className = 'videocontainer'
  31. id = 'largeVideoContainer'>
  32. <div id = 'sharedVideo'>
  33. <div id = 'sharedVideoIFrame' />
  34. </div>
  35. <div id = 'etherpad' />
  36. <Watermarks />
  37. <div id = 'dominantSpeaker'>
  38. <div className = 'dynamic-shadow' />
  39. <img
  40. id = 'dominantSpeakerAvatar'
  41. src = '' />
  42. </div>
  43. <div id = 'remotePresenceMessage' />
  44. <span id = 'remoteConnectionMessage' />
  45. <div>
  46. <div className = 'video_blurred_container'>
  47. <video
  48. autoPlay = { true }
  49. id = 'largeVideoBackground'
  50. muted = 'true' />
  51. </div>
  52. {
  53. /**
  54. * FIXME: the architecture of elements related to the
  55. * large video and the naming. The background is not
  56. * part of largeVideoWrapper because we are controlling
  57. * the size of the video through largeVideoWrapper.
  58. * That's why we need another container for the the
  59. * background and the largeVideoWrapper in order to
  60. * hide/show them.
  61. */
  62. }
  63. <div id = 'largeVideoWrapper'>
  64. <video
  65. autoPlay = { true }
  66. id = 'largeVideo'
  67. muted = { true } />
  68. </div>
  69. </div>
  70. <span id = 'localConnectionMessage' />
  71. { this.props.hideVideoQualityLabel
  72. ? null : <VideoQualityLabel /> }
  73. <RecordingLabel />
  74. </div>
  75. );
  76. }
  77. }