├── .gitignore
├── README.md
├── backend
├── data
│ ├── geek.mv.db
│ └── geek.trace.db
└── src
│ └── main
│ ├── java
│ └── org
│ │ └── bytedeco
│ │ └── javacv
│ │ └── FFmpegFrameGrabber1.java
│ ├── resources
│ ├── application.conf
│ ├── css
│ │ ├── bloom.css
│ │ ├── bootstrap.min.css
│ │ ├── custom.min.css
│ │ ├── font-awesome.min.css
│ │ ├── home.css
│ │ ├── jquery.validation.css
│ │ ├── live.css
│ │ ├── liveHouse.css
│ │ ├── style2.0.css
│ │ ├── userInfo_preRecord.css
│ │ ├── video-js.css
│ │ ├── video-js.min.css
│ │ ├── watchRecordPage.css
│ │ └── weui.min.css
│ ├── ehcache-default.xml
│ ├── html
│ │ ├── index.html
│ │ └── test.html
│ ├── img
│ │ ├── background1.jpg
│ │ ├── background2.jpg
│ │ ├── background3.jpg
│ │ ├── bg1.png
│ │ ├── bg1
│ │ │ ├── 5c7f401e044e8.psd
│ │ │ └── ibaotu.doc
│ │ ├── bg3.jpg
│ │ ├── bg4.jpg
│ │ ├── bg5.jpg
│ │ ├── bg6.jpg
│ │ ├── black.jpg
│ │ ├── blueSky.jpg
│ │ ├── cat.jpg
│ │ ├── house.png
│ │ ├── invite.png
│ │ ├── login
│ │ │ ├── 1.png
│ │ │ ├── page1_0.png
│ │ │ ├── page1_1.png
│ │ │ ├── page1_2.png
│ │ │ └── page1_3.jpg
│ │ ├── logo.png
│ │ ├── logo2.png
│ │ ├── logo3.png
│ │ ├── logo4.png
│ │ ├── logo4_Title.png
│ │ ├── logout.png
│ │ ├── mycard.png
│ │ ├── player.png
│ │ ├── room.png
│ │ ├── test.jpg
│ │ ├── user.png
│ │ ├── video.png
│ │ ├── videoCover
│ │ │ ├── video0.png
│ │ │ ├── video1.png
│ │ │ ├── video2.png
│ │ │ ├── video3.png
│ │ │ ├── video4.png
│ │ │ ├── video5.png
│ │ │ ├── video6.png
│ │ │ ├── video7.png
│ │ │ ├── video8.png
│ │ │ └── video9.png
│ │ ├── water-splash.jpg
│ │ ├── waterhill.jpg
│ │ └── 关闭.svg
│ ├── js
│ │ ├── bootstrap.min.js
│ │ ├── com.js
│ │ ├── jquery-1.8.0.min.js
│ │ ├── jquery-2.1.1.js
│ │ ├── jquery.min.js
│ │ ├── jquery.validation.js
│ │ ├── video.js
│ │ └── video.min.js
│ ├── logback.xml
│ └── sql
│ │ ├── add.sql
│ │ ├── backup.sql
│ │ ├── geek_h2.sql
│ │ └── geek_mysql.sql
│ └── scala
│ └── org
│ └── seekloud
│ └── geek
│ ├── Boot.scala
│ ├── common
│ ├── AppSettings.scala
│ ├── Common.scala
│ └── Constant.scala
│ ├── core
│ ├── Grabber.scala
│ ├── GrabberManager.scala
│ ├── Invitation.scala
│ ├── Recorder.scala
│ ├── RoomActor.scala
│ ├── RoomDealer.scala
│ ├── RoomManager.scala
│ ├── UserActor.scala
│ └── UserManager.scala
│ ├── http
│ ├── BaseService.scala
│ ├── FileService.scala
│ ├── HttpService.scala
│ ├── InvitationService.scala
│ ├── ResourceService.scala
│ ├── RoomService.scala
│ ├── ServiceUtils.scala
│ ├── SessionBase.scala
│ └── UserService.scala
│ ├── models
│ ├── SlickTables.scala
│ └── dao
│ │ ├── RoomDao.scala
│ │ ├── UserDao.scala
│ │ └── VideoDao.scala
│ ├── protocol
│ └── RoomProtocol.scala
│ └── utils
│ ├── Cache.scala
│ ├── CacheSupport.scala
│ ├── CirceSupport.scala
│ ├── DBUtil.scala
│ ├── EhCacheApi.scala
│ ├── FileUtil.scala
│ ├── HestiaClient.scala
│ ├── HttpUtil.scala
│ ├── MySlickCodeGenerator.scala
│ ├── SecureUtil.scala
│ ├── SessionSupport.scala
│ ├── TimeUtil.scala
│ └── ZipUtil.scala
├── build.sbt
├── capture
└── src
│ └── main
│ ├── java
│ └── org
│ │ └── bytedeco
│ │ └── javacv
│ │ ├── DesUtil.java
│ │ ├── Java2DFrameUtils.java
│ │ ├── JavaFXFrameConverter1.java
│ │ ├── JavaUtils.java
│ │ └── test.java
│ ├── resources
│ └── application.conf
│ └── scala
│ └── org
│ └── seekloud
│ └── geek
│ └── capture
│ ├── Boot.scala
│ ├── common
│ └── AppSettings.scala
│ ├── core
│ ├── CaptureManager.scala
│ ├── DesktopCapture.scala
│ ├── EncodeActor.scala
│ ├── ImageCapture.scala
│ ├── MontageActor.scala
│ └── SoundCapture.scala
│ ├── demo
│ ├── TestCaptureActor.scala
│ ├── TestRecordScreenActor.scala
│ ├── TestScala.scala
│ └── testRemoveBlackInImage.scala
│ ├── processor
│ └── ImageConverter.scala
│ ├── protocol
│ └── Messages.scala
│ └── sdk
│ ├── DeviceUtil.scala
│ └── MediaCapture.scala
├── client
├── msg.rtmp
└── src
│ └── main
│ ├── java
│ └── org
│ │ └── seekloud
│ │ └── geek
│ │ └── client
│ │ └── component
│ │ └── bubble
│ │ ├── AlertDemo.java
│ │ ├── Bubble.java
│ │ ├── BubbleSpec.java
│ │ ├── BubbledLabel.java
│ │ ├── ButtonDemo.java
│ │ ├── CustomWindowDemo.java
│ │ └── Overdrive.java
│ ├── resources
│ ├── application.conf
│ ├── css
│ │ ├── common.css
│ │ └── controlbar.css
│ ├── img
│ │ ├── agreeBtn.png
│ │ ├── audienceBack.png
│ │ ├── backBtn1.png
│ │ ├── background.jpg
│ │ ├── backward.png
│ │ ├── banner.jpeg
│ │ ├── clock.png
│ │ ├── coin.png
│ │ ├── confirm.png
│ │ ├── connection.png
│ │ ├── connection1.png
│ │ ├── connectionBg.jpg
│ │ ├── continue.png
│ │ ├── date.png
│ │ ├── defaultCover.jpg
│ │ ├── email.png
│ │ ├── enterBtn.png
│ │ ├── filter.png
│ │ ├── font1.ttf
│ │ ├── forward.png
│ │ ├── full-screen.png
│ │ ├── gift1.png
│ │ ├── gift2.png
│ │ ├── gift3.png
│ │ ├── gift4.png
│ │ ├── gift5.png
│ │ ├── gift6.png
│ │ ├── header.png
│ │ ├── hideBtn.png
│ │ ├── icomoon.ttf
│ │ ├── imageOffBtn.png
│ │ ├── imageOnBtn.png
│ │ ├── like.png
│ │ ├── liked.png
│ │ ├── link.png
│ │ ├── live.png
│ │ ├── liveLabel.png
│ │ ├── liveOffBtn.png
│ │ ├── liveOnBtn.png
│ │ ├── liveRooms.png
│ │ ├── liveState1.png
│ │ ├── loading.jpg
│ │ ├── login.png
│ │ ├── logout.png
│ │ ├── messageIcon.png
│ │ ├── passWord.png
│ │ ├── pause.png
│ │ ├── recordLabel.png
│ │ ├── recordOffBtn.png
│ │ ├── recordOnBtn.png
│ │ ├── recordRooms.png
│ │ ├── refreshBtn.png
│ │ ├── refuseBtn.png
│ │ ├── register.png
│ │ ├── roomDes.png
│ │ ├── roomInfo.png
│ │ ├── roomName.png
│ │ ├── roomScene-like.png
│ │ ├── roomScene-view.png
│ │ ├── rose.png
│ │ ├── seguiemj.ttf
│ │ ├── shutdown.png
│ │ ├── soundOffBtn.png
│ │ ├── soundOnBtn.png
│ │ ├── toggleIcon1.png
│ │ ├── toggleIcon2.png
│ │ ├── toggleIcon3.png
│ │ ├── user.png
│ │ ├── userName.png
│ │ ├── view.png
│ │ ├── waitPulling.gif
│ │ ├── waiting.gif
│ │ ├── watch.png
│ │ ├── watching.png
│ │ ├── watching1.png
│ │ ├── welcomeBg3.png
│ │ └── welcomeText.png
│ ├── logback.xml
│ └── scene
│ │ ├── css
│ │ ├── geek-host.css
│ │ ├── geek-user.css
│ │ └── geek_login.css
│ │ ├── geek-host.fxml
│ │ ├── geek-login.fxml
│ │ ├── geek-user.fxml
│ │ ├── img
│ │ ├── 1.png
│ │ ├── Alert.png
│ │ ├── alert-circle.svg
│ │ ├── avatar.jpg
│ │ ├── bg.jpg
│ │ ├── close.png
│ │ ├── close.psd
│ │ ├── empty.jpg
│ │ ├── jpin.psd
│ │ ├── loading.png
│ │ ├── loading.psd
│ │ ├── login.png
│ │ └── off.png
│ │ └── popup.fxml
│ └── scala
│ └── org
│ └── seekloud
│ └── geek
│ └── client
│ ├── Boot.scala
│ ├── FxApp.scala
│ ├── Main.scala
│ ├── common
│ ├── AppSettings.scala
│ ├── Constants.scala
│ ├── Pictures.scala
│ ├── Routes.scala
│ └── StageContext.scala
│ ├── component
│ ├── Avatar.scala
│ ├── AvatarColumn.scala
│ ├── BottomBar.scala
│ ├── CommentColumn.scala
│ ├── Common.scala
│ ├── ConfirmDialog.scala
│ ├── HostOperateIcon.scala
│ ├── InputDialog.scala
│ ├── Loading.scala
│ ├── Message.scala
│ ├── Popup.scala
│ ├── RippleIcon.scala
│ ├── SnackBar.scala
│ ├── TopBar.scala
│ └── WarningDialog.scala
│ ├── controller
│ ├── CommonController.scala
│ ├── GeekHostController.scala
│ ├── GeekLoginController.scala
│ └── GeekUserController.scala
│ ├── core
│ ├── HostUIManager.scala
│ ├── NetImageProcessor.scala
│ ├── RmManager.scala
│ ├── SceneManager.scala
│ ├── collector
│ │ └── ClientCaptureActor.scala
│ ├── player
│ │ └── VideoPlayer.scala
│ └── stream
│ │ └── LiveManager.scala
│ └── utils
│ ├── CirceSupport.scala
│ ├── CommonUI.scala
│ ├── GetAllPixel.scala
│ ├── HestiaClient.scala
│ ├── HttpUtil.scala
│ ├── NetUsage.scala
│ ├── NetUtil.scala
│ ├── OshiUtil.java
│ ├── RMClient.scala
│ ├── RoomClient.scala
│ ├── TimeUtil.scala
│ ├── VideoUtil.scala
│ ├── WsUtil.scala
│ └── test.scala
├── doc
└── media
│ ├── host.png
│ ├── login.png
│ ├── user-2.png
│ └── user.png
├── frontend
└── src
│ └── main
│ └── scala
│ └── org
│ └── seekloud
│ └── geek
│ ├── Main.scala
│ ├── common
│ └── Route.scala
│ ├── pages
│ ├── Header.scala
│ ├── HomePage.scala
│ ├── InviterManagement.scala
│ ├── Login.scala
│ ├── Login_new.scala
│ ├── PreRecord.scala
│ ├── UserInfoPage.scala
│ ├── UserInfoPage_old.scala
│ ├── WatchRecord.scala
│ └── WatchRecord_new.scala
│ ├── utils
│ ├── Component.scala
│ ├── Http.scala
│ ├── JsFunc.scala
│ ├── Modal.scala
│ ├── Page.scala
│ ├── PageSwitcher.scala
│ ├── RegEx.scala
│ ├── Shortcut.scala
│ ├── TimeTool.scala
│ └── UserInfo.scala
│ └── videoJs
│ ├── VideoJSBuilderNew.scala
│ └── package.scala
├── media
├── login.png
└── user.png
├── player
└── src
│ └── main
│ ├── java
│ └── org
│ │ └── bytedeco
│ │ └── javacv
│ │ └── JavaFXFrameConverter2.java
│ ├── resources
│ ├── application.conf
│ └── img
│ │ ├── bg.jpg
│ │ ├── join.png
│ │ ├── loading.jpg
│ │ └── waiting.gif
│ └── scala
│ └── org
│ └── seekloud
│ └── geek
│ └── player
│ ├── Boot.scala
│ ├── common
│ ├── AppSettings.scala
│ └── Constants.scala
│ ├── core
│ ├── ImageActor.scala
│ ├── PlayerGrabber.scala
│ ├── PlayerManager.scala
│ ├── RecordActor.scala
│ └── SoundActor.scala
│ ├── demo
│ ├── Test1.scala
│ ├── Test2.scala
│ └── VideoPlayer.scala
│ ├── processor
│ └── ImageConverter.scala
│ ├── protocol
│ └── Messages.scala
│ ├── sdk
│ └── MediaPlayer.scala
│ └── util
│ ├── CirceSupport.scala
│ ├── GCUtil.scala
│ ├── HttpUtil.scala
│ └── RecordUtil.scala
├── project
├── Dependencies.scala
├── Dependencies4Capture.scala
├── Dependencies4Client.scala
├── Dependencies4Player.scala
├── META-INF
│ └── MANIFEST.MF
├── build.properties
└── plugins.sbt
└── shared
├── .js
└── target
│ └── streams
│ └── $global
│ └── ivyConfiguration
│ └── $global
│ └── streams
│ └── out
└── src
└── main
└── scala
└── org
└── seekloud
└── geek
└── shared
├── ptcl
├── CommonInfo.scala
├── CommonProtocol.scala
├── FileProtocol.scala
├── Protocol.scala
├── RoomProtocol.scala
├── UserProtocol.scala
├── WsProtocol.scala
└── package.scala
└── rtp
└── Protocol.scala
/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /backend/target/
3 | /frontend/target/
4 | /project/project/target/
5 | /project/target/
6 | /shared/target/
7 | /shared/.js/target/
8 | /shared/.jvm/target/
9 | /target/
10 | /client/target/
11 |
12 | # Created by .ignore support plugin (hsz.mobi)
13 | ### JetBrains template
14 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
15 |
16 | *.iml
17 | dataReceive/
18 |
19 | ## Directory-based project format:
20 | /.idea/
21 | # if you remove the above rule, at least ignore the following:
22 |
23 | # User-specific stuff:
24 | /.idea/workspace.xml
25 | /.idea/tasks.xml
26 | /.idea/dictionaries
27 |
28 | # Sensitive or high-churn files:
29 | /.idea/dataSources.ids
30 | /.idea/dataSources.xml
31 | /.idea/sqlDataSources.xml
32 | /.idea/dynamic.xml
33 | /.idea/uiDesigner.xml
34 |
35 | # Gradle:
36 | /.idea/gradle.xml
37 | /.idea/libraries
38 |
39 | # Mongo Explorer plugin:
40 | .idea/mongoSettings.xml
41 |
42 | ## File-based project format:
43 | *.ipr
44 | *.iws
45 |
46 | ## Plugin-specific files:
47 |
48 | # IntelliJ
49 | /out/
50 |
51 | # mpeltonen/sbt-idea plugin
52 | .idea_modules/
53 |
54 | # JIRA plugin
55 | atlassian-ide-plugin.xml
56 |
57 | # Crashlytics plugin (for Android Studio and IntelliJ)
58 | com_crashlytics_export_strings.xml
59 | crashlytics.properties
60 | crashlytics-build.properties
61 | ### Scala template
62 | *.class
63 | *.log
64 |
65 | # sbt specific
66 | .cache
67 | .history
68 | .lib/
69 | dist/*
70 | target/
71 | lib_managed/
72 | src_managed/
73 | project/boot/
74 | project/plugins/project/
75 |
76 | # Scala-IDE specific
77 | .scala_dependencies
78 | .worksheet
79 | ### SBT template
80 | # Simple Build Tool
81 | # http://www.scala-sbt.org/release/docs/Getting-Started/Directories.html#configuring-version-control
82 |
83 |
84 | .logs
85 | .eventLog
86 | backend/target
87 | #backend/data
88 | frontend/target
89 | # Created by .ignore support plugin (hsz.mobi)
90 | /backend/src/main/resources/application.conf
91 |
92 | .*/
93 | !/.gitignore
94 |
95 |
96 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## geek 云会议
2 |
3 | 支持4人左右的会议通话
4 | pc端直播、web端录像管理
5 |
6 |
7 |
8 | 
9 |
10 |
11 |
12 | 
13 |
14 | 
15 |
16 |
17 | 
--------------------------------------------------------------------------------
/backend/data/geek.mv.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HiddenTrackMJ/geek/c898a827b6987c45b2782601202d1d40f4ce48c6/backend/data/geek.mv.db
--------------------------------------------------------------------------------
/backend/src/main/resources/css/live.css:
--------------------------------------------------------------------------------
1 | /*观战*/
2 | .player {
3 | height: 25px;
4 | width: 25px;
5 | }
6 |
7 | .eyesight:hover{
8 | background-color: lightgray;
9 | cursor: pointer;
10 | }
11 |
12 | .screenControl{
13 | background-color: black;
14 | height: 40px;
15 | /*width: 1000px;*/
16 | }
17 |
18 | .screen{
19 | height: 30px;
20 | width: 30px;
21 | margin-left: 10px;
22 | cursor: pointer;
23 | }
24 |
25 | .voice{
26 | height: 30px;
27 | width: 30px;
28 | /*margin-left: 900px;*/
29 | cursor: pointer;
30 | }
31 |
32 | .playerSelect {
33 | background-color: lightgray;
34 | }
35 |
36 | .wrapper {
37 | position: relative;
38 | }
39 |
40 | .star {
41 | position: absolute;
42 | display: inline-block;
43 | cursor: pointer;
44 | width: 25px;
45 | top: -12px;
46 | }
47 |
48 | .home {
49 | margin-left: 380px;
50 | width: 30px;
51 | cursor: pointer;
52 | }
53 | .comment-Video{
54 | display: flex;
55 | align-items: center;
56 | position: fixed;
57 | margin-top: 375px;
58 | margin-left: -10px;
59 | background: white;
60 | }
61 | .commentSubmit{
62 | width: 82px;
63 | height: 32px;
64 | background: rgba(49,144,255,1);
65 | color: rgba(255,255,255,1);
66 | border-radius: 4px;
67 | cursor: pointer;
68 | text-align: center;
69 | line-height: 32px;
70 | margin: 5px;
71 | }
72 | .commentNoSubmit{
73 | /*display: flex;*/
74 | width: 82px;
75 | height: 32px;
76 | background:#999;
77 | color: rgba(255,255,255,1);
78 | border-radius: 4px;
79 | text-align: center;
80 | line-height: 32px;
81 | margin: 5px;
82 | }
83 | .commentInput{
84 | color: #212121;
85 | /* -webkit-box-flex: 1; */
86 | -ms-flex-positive: 1;
87 | flex-grow: 1;
88 | /* border: 0; */
89 | /* height: 30px; */
90 | margin: 5px;
91 | line-height: 25px;
92 | /* -webkit-box-sizing: border-box; */
93 | /* box-sizing: border-box; */
94 | /* z-index: 12; */
95 | padding: 0 5px;
96 | background: none;
97 | /* font-size: 12px; */
98 | /* min-width: 115px; */
99 | width: 100%;
100 | }
101 | .commentTitle{
102 | display: flex;
103 | }
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/backend/src/main/resources/ehcache-default.xml:
--------------------------------------------------------------------------------
1 |
4 |