
repo นี้ไม่ได้รับการดูแลอีกต่อไป ใช้ที่เก็บนี้ https://github.com/wangsrgit119/janus-webrtc-gateway-docker เพื่อยกประเด็นหรือ PRS ขอบคุณ.
https://www.useloom.com/share/325799006D6F4B64A6CE0662CA3F1D57
1. git clone https://github.com/atyenoria/janus-webrtc-gateway-docker.git && cd janus-webrtc-gateway-docker
2. make build
3. make run
4. star this repository after succeeding. Create the issue if you failed. We will help you as much as possible
นี่คือภาพนักเทียบท่าสำหรับ Janus Webrtc Gateway Janus Gateway ยังอยู่ภายใต้ขั้นตอนการพัฒนาที่ใช้งานอยู่ ดังนั้นตามที่เอกสารอย่างเป็นทางการกล่าวว่าการปรับเปลี่ยนเล็กน้อยของเวอร์ชันห้องสมุดมิดเดิลแวร์เกิดขึ้นบ่อยครั้ง ฉันพยายามจัดการกับ chage เช่นที่ฉันทำได้ หากคุณต้องการคำขอใด ๆ เกี่ยวกับ repo นี้ให้ติดต่อฉันฟรี เกี่ยวกับรายละเอียดของการตั้งค่าสำหรับภาพนักเทียบท่านี้คุณควรอ่านเอกสารอย่างเป็นทางการ https://janus.conf.meetecho.com/index.html อย่างระมัดระวัง
ด้วย libnice ล่าสุด Janus Gateway ดูเหมือนจะมีประสิทธิภาพที่ยอดเยี่ยม repo นี้มีแพตช์นี้ (ดู https://gitlab.freedesktop.org/libnice/libnice/merge_requests/13) https://webrtchacks.com/sfu-load-testing/
(กราฟด้านขวา Janus มีให้สำหรับภาพนักเทียบท่านี้)
ฉันคิดว่า Janus ดีกว่าสำหรับการสัมมนาผ่านเว็บ (การสัมมนาทางเว็บ) และ Jitsi ดีกว่าสำหรับระบบการประชุมทางเว็บ ความสามารถในการปรับขนาดของสะพานวิดีโอ Jitsi ปัจจุบัน (20181007) ไม่ดีเนื่องจากไม่มีไฟล์บันทึกท้องถิ่น (ฉันไม่แน่ใจในเรื่องนี้ .. ) https://www.youtube.com/watch?v=ohhoqkcjj0e jitsi last-n + vp8 simulcasting มีประสิทธิภาพที่ดีมากสำหรับการประชุมทางเว็บ https://jitsi.org/wp-content/uploads/2016/12/nossdav2015last สำหรับการประชุมวิดีโอผสมโดยใช้ Chrome Headlesss + FFMPEG (ALSA, LIBXCB) จากจุดเหล่านี้ Janus เหมาะสำหรับการสัมมนาผ่านเว็บ Jitsi สำหรับการประชุมทางเว็บ แน่นอนทั้ง WebRTC SFU เป็นงานที่ยอดเยี่ยม !! ฉันใช้ทั้งสองอย่าง
ใช้ iperf, netperf
libsrtp version: 2.x
SSL/crypto library: BoringSSL
DTLS set-timeout: yes
Mutex implementation: GMutex (native futex on Linux)
DataChannels support: yes
Recordings post-processor: yes
TURN REST API client: yes
Doxygen documentation: no
Transports:
REST (HTTP/HTTPS): yes
WebSockets: yes
RabbitMQ: no
MQTT: no
Unix Sockets: no
Nanomsg: no
Plugins:
Echo Test: yes
Streaming: yes
Video Call: yes
SIP Gateway (Sofia): yes
SIP Gateway (libre): no
NoSIP (RTP Bridge): yes
Audio Bridge: yes
Video Room: yes
Voice Mail: yes
Record&Play: yes
Text Room: yes
Lua Interpreter: no
Duktape Interpreter: no
Event handlers:
Sample event handler: no
RabbitMQ event handler:no
MQTT event handler: no
JavaScript modules: no
IP=0.0.0.0
PORT=8888
/root/bin/ffmpeg -y -i "rtmp://$IP:80/rtmp_relay/$1 live=1" -c:v libx264 -profile:v main -s 640x480 -an -preset ultrafast -tune zerolatency -f rtp rtp://$IP:$PORT
คุณควรใช้ปลั๊กอิน Janus Streaming
https://github.com/meetecho/janus-gateway/blob/8b388aebb0de3ccfad3b25f940f61e48e308e604/plugins/janus_streaming.c
IP=0.0.0.0
PORT=8888
SDP_FILE=sdp.file
/root/bin/ffmpeg -analyzeduration 300M -probesize 300M -protocol_whitelist file,udp,rtp -i $SDP_FILE -c:v copy -c:a aac -ar 16k -ac 1 -preset ultrafast -tune zerolatency -f flv rtmp://$IP:$PORT/rtmp_relay/atyenoria
เพื่อให้ Keyframe ง่ายขึ้นมากมีประโยชน์ในการตั้งค่า fir_freq = 1 ใน Janus conf
คุณควรใช้ห้องวิดีโอ Janus หรือปลั๊กอิน AudioBridge
https://github.com/meetecho/janus-gateway/blob/8b388aebb0de3ccfad3b25f940f61e48e308e604/plugins/janus_videoroom.c.c
https://github.com/meetecho/janus-gateway/blob/8b388aebb0de3ccfad3b25f940f61e48e308e604/plugins/janus_audiobridge.c
หลังจากเผยแพร่ฟีดของคุณในห้องของคุณคุณควรใช้ RTP-forward คำสั่งตัวอย่าง JavaScript คือ
# Input this in Google Chrome debug console. you must change publisher_id, room, video_port, host, secret for your conf.
var register = { "request" : "rtp_forward", "publisher_id": 3881836128186438, "room" : 1234, "video_port": 8050, "host" : "your ip address", "secret" : "unko" }
sfutest.send({"message": register});
`#{ffmpeg_path} -y
-ss #{member[0].ss_at_time} -t #{member[0].t_at_time} -i #{member[0].file_path} -ss #{member[1].ss_at_time} -t #{member[1].t_at_time} -i #{member[1].file_path}
-ss #{member[2].ss_at_time} -t #{member[2].t_at_time} -i #{member[2].file_path} -f lavfi -i "color=White"
-filter_complex "
nullsrc=size=640x480 [base];
[0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft];
[3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright];
[base][upperleft] overlay=shortest=1 [tmp1];
[tmp1][upperright] overlay=shortest=1:x=320 [tmp2];
[tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3];
[tmp3][lowerright] overlay=shortest=1:y=240:x=320;
[0:a][1:a][2:a] amerge=inputs=3
"
-preset ultrafast -r 30 -b:v 300k -c:v libx264 #{"/tmp/" + @conference["room_name"] + "/" + index.to_s + ".mp4"}`
server_names_hash_bucket_size 64;
server {
listen 443 ssl;
server_name temp;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";
add_header Strict-Transport-Security "max-age=31536000";
ssl_certificate /usr/local/nginx/server.crt;
ssl_certificate_key /usr/local/nginx/server.key;
access_log /app/log/nginx_access.log ;
error_log /app/log/nginx_error.log debug;
location /janus {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8188;
}
location /janus_http {
proxy_pass http://127.0.0.1:8078;
}
location /janus_admin {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:7188;
}
location /janus_admin_http {
proxy_pass http://127.0.0.1:7088;
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
Akinori Nakajima https://twitter.com/atyenori
ทุกคนยินดี