[+] Docker
This commit is contained in:
@@ -56,6 +56,14 @@
|
|||||||
|
|
||||||
> 注意:Web终端不支持同时进入多个视频房间,安卓终端支持同时进入多个视频房间。
|
> 注意:Web终端不支持同时进入多个视频房间,安卓终端支持同时进入多个视频房间。
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
```
|
||||||
|
acgist/taoyao-client-web
|
||||||
|
acgist/taoyao-client-media
|
||||||
|
acgist/taoyao-signal-server
|
||||||
|
```
|
||||||
|
|
||||||
## 证书
|
## 证书
|
||||||
|
|
||||||
本地开发测试安装`docs/certs`中的`ca.crt`证书到`受信任的根证书颁发机构`
|
本地开发测试安装`docs/certs`中的`ca.crt`证书到`受信任的根证书颁发机构`
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
# Docker
|
||||||
|
|
||||||
|
## 镜像
|
||||||
|
|
||||||
|
```
|
||||||
|
# Web
|
||||||
|
docker pull acgist/taoyao-client-web:1.0.0
|
||||||
|
docker run --name="taoyao-client-web" -d acgist/taoyao-client-web:1.0.0
|
||||||
|
docker run --name="taoyao-client-web" -d -p 0.0.0.0:8443:8443 acgist/taoyao-client-web:1.0.0
|
||||||
|
docker run --name="taoyao-client-web" -it acgist/taoyao-client-web:1.0.0 /bin/bash
|
||||||
|
docker exec -it acgist/taoyao-client-web:1.0.0 /bin/bash
|
||||||
|
|
||||||
|
# 媒体服务
|
||||||
|
docker pull acgist/taoyao-client-media:1.0.0
|
||||||
|
docker run --name="taoyao-client-media" -d acgist/taoyao-client-media:1.0.0
|
||||||
|
docker run --name="taoyao-client-media" -it acgist/taoyao-client-media:1.0.0 /bin/bash
|
||||||
|
docker exec -it acgist/taoyao-client-media:1.0.0 /bin/bash
|
||||||
|
|
||||||
|
# 信令服务
|
||||||
|
docker pull acgist/taoyao-signal-server:1.0.0
|
||||||
|
docker run --name="taoyao-signal-server" -d acgist/taoyao-signal-server:1.0.0
|
||||||
|
docker run --name="taoyao-signal-server" -d -p 0.0.0.0:8888:8888 -p 0.0.0.0:9999:9999 acgist/taoyao-signal-server:1.0.0
|
||||||
|
docker run --name="taoyao-signal-server" -it acgist/taoyao-signal-server:1.0.0 /bin/bash
|
||||||
|
docker exec -it acgist/taoyao-signal-server:1.0.0 /bin/bash
|
||||||
|
```
|
||||||
|
|
||||||
|
## 制作
|
||||||
|
|
||||||
|
```
|
||||||
|
# Web
|
||||||
|
docker image build -t acgist/taoyao-client-web:1.0.0 .
|
||||||
|
docker push acgist/taoyao-client-web:1.0.0
|
||||||
|
|
||||||
|
# 媒体服务
|
||||||
|
docker image build -t acgist/taoyao-client-media:1.0.0 .
|
||||||
|
docker push acgist/taoyao-client-media:1.0.0
|
||||||
|
|
||||||
|
# 信令服务
|
||||||
|
docker image build -t acgist/taoyao-signal-server:1.0.0 .
|
||||||
|
docker push acgist/taoyao-signal-server:1.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dockerfile
|
||||||
|
|
||||||
|
### Web
|
||||||
|
|
||||||
|
```
|
||||||
|
FROM node:18.16.0
|
||||||
|
EXPOSE 8443/tcp
|
||||||
|
COPY taoyao-client-web /data/taoyao/taoyao-client-web
|
||||||
|
WORKDIR /data/taoyao/taoyao-client-web
|
||||||
|
CMD npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 媒体服务
|
||||||
|
|
||||||
|
```
|
||||||
|
FROM node:18.16.0
|
||||||
|
COPY taoyao-client-media /data/taoyao/taoyao-client-media
|
||||||
|
WORKDIR /data/taoyao/taoyao-client-media
|
||||||
|
CMD npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 信令服务
|
||||||
|
|
||||||
|
```
|
||||||
|
FROM openjdk:17.0.2-jdk
|
||||||
|
EXPOSE 8888/tcp
|
||||||
|
EXPOSE 9999/tcp
|
||||||
|
COPY taoyao-signal-server /data/taoyao/taoyao-signal-server
|
||||||
|
WORKDIR /data/taoyao/taoyao-signal-server
|
||||||
|
CMD ./deploy/bin/startup.sh
|
||||||
|
```
|
||||||
|
|||||||
@@ -6,16 +6,17 @@ base=${bin%/*}
|
|||||||
cd $base
|
cd $base
|
||||||
echo "启动目录:$base"
|
echo "启动目录:$base"
|
||||||
|
|
||||||
# Java运行环境
|
|
||||||
JAVA=$(which java)
|
|
||||||
if [ -z "$JAVA" ] ; then
|
|
||||||
echo "必须安装${java.version}+JDK"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 结束任务
|
# 结束任务
|
||||||
if [ ! -f "/.dockerenv" ]; then
|
if [ ! -f "/.dockerenv" ]; then
|
||||||
sh bin/stop.sh
|
# Java运行环境
|
||||||
|
JAVA=$(which java)
|
||||||
|
if [ -z "$JAVA" ] ; then
|
||||||
|
echo "必须安装${java.version}+JDK"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
bash bin/stop.sh
|
||||||
|
else
|
||||||
|
JAVA="java"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 启动参数
|
# 启动参数
|
||||||
@@ -38,7 +39,7 @@ fi
|
|||||||
|
|
||||||
# 等待任务
|
# 等待任务
|
||||||
if [ ! -f "/.dockerenv" ]; then
|
if [ ! -f "/.dockerenv" ]; then
|
||||||
sh bin/wait.sh
|
bash bin/wait.sh
|
||||||
else
|
else
|
||||||
echo -e "\033[32m启动成功:${project.artifactId}-${project.version}\033[0m"
|
echo -e "\033[32m启动成功:${project.artifactId}-${project.version}\033[0m"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ sleep 1
|
|||||||
# 等待任务
|
# 等待任务
|
||||||
startTime=$(date +%s)
|
startTime=$(date +%s)
|
||||||
processId=$(ps -aux | grep "${project.artifactId}" | grep java | awk '{print $2}')
|
processId=$(ps -aux | grep "${project.artifactId}" | grep java | awk '{print $2}')
|
||||||
|
processPortNumber=0
|
||||||
if [ ! -z "$processId" ]; then
|
if [ ! -z "$processId" ]; then
|
||||||
waitIndex=0
|
waitIndex=0
|
||||||
processPortNumber=$(netstat -anop | grep $processId | grep LISTEN | wc -l)
|
processPortNumber=$(netstat -anop | grep $processId | grep LISTEN | wc -l)
|
||||||
@@ -23,9 +24,9 @@ if [ ! -z "$processId" ]; then
|
|||||||
done
|
done
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
if [ "$processPortNumber" -lt 1 ]; then
|
if [ $processPortNumber -lt 1 ]; then
|
||||||
echo -e "\033[31m启动失败:${project.artifactId}-${project.version}\033[0m"
|
echo -e "\033[31m启动失败:${project.artifactId}-${project.version}\033[0m"
|
||||||
sh bin/stop.sh
|
bash bin/stop.sh
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
finishTime=$(date +%s)
|
finishTime=$(date +%s)
|
||||||
|
|||||||
@@ -89,6 +89,13 @@ public class RtpTest {
|
|||||||
// ffmpeg不支持rtcpMux
|
// ffmpeg不支持rtcpMux
|
||||||
// ffmpeg -re -i video.mp4 -c:v libvpx -map 0:0 -f tee "[select=v:f=rtp:ssrc=123123:payload_type=102]rtp://192.168.1.110:40793?rtcpport=47218"
|
// ffmpeg -re -i video.mp4 -c:v libvpx -map 0:0 -f tee "[select=v:f=rtp:ssrc=123123:payload_type=102]rtp://192.168.1.110:40793?rtcpport=47218"
|
||||||
// ffmpeg -re -i video.mp4 -c:v vp8 -map 0:0 -f tee "[select=v:f=rtp:ssrc=123123:payload_type=102]rtp://192.168.1.110:40793?rtcpport=47218"
|
// ffmpeg -re -i video.mp4 -c:v vp8 -map 0:0 -f tee "[select=v:f=rtp:ssrc=123123:payload_type=102]rtp://192.168.1.110:40793?rtcpport=47218"
|
||||||
|
// 音频视频同时传输
|
||||||
|
// ffmpeg -re -i video.mp4 -c:v copy -an -f rtp rtp://192.168.8.122:6666 -c:a copy -vn -f rtp rtp://192.168.8.122:7777 -sdp_file taoyao.sdp
|
||||||
|
// ffplay -protocol_whitelist "file,rtp,udp" -i taoyao.sdp
|
||||||
|
// ffmpeg -protocol_whitelist "file,rtp,udp" -i taoyao.sdp taoyao.mp4
|
||||||
|
// 混音
|
||||||
|
// ffmpeg -re -i video.mp4 -i music.mp3 -map 0 -vn -c:a copy -f rtp rtp://192.168.8.122:6666 -map 0 -an -c:v copy -f rtp rtp://192.168.8.122:7777 -map 1 -c:a aac -f rtp rtp://192.168.8.122:8888 -sdp_file taoyao.sdp
|
||||||
|
// ffmpeg -protocol_whitelist "file,rtp,udp" -i taoyao.sdp -filter_complex "[0:0]aresample=8000[a0];[0:2]aresample=8000[a2];[a0][a2]amix=inputs=2" taoyao.mp4
|
||||||
final Scanner scanner = new Scanner(System.in);
|
final Scanner scanner = new Scanner(System.in);
|
||||||
do {
|
do {
|
||||||
if(StringUtils.isEmpty(line)) {
|
if(StringUtils.isEmpty(line)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user