分类目录系统

Kurento

主页: http://www.kurento.org/
github: https://github.com/kurento
服务端采用C++实现: https://github.com/Kurento/kurento-media-server
Docker https://hub.docker.com/r/kurento/kurento-media-server
说明文档 https://doc-kurento.readthedocs.io/en/stable/

Kurento模块分为三类:
主要模块与Kurento Media Server开箱即用合并:
kms-core:Kurento Media Server的主要组件。
kms-elements:Kurento Media Elements的实现(WebRtcEndpoint,PlayerEndpoint等)
kms-filters:
Kurento过滤器的实现(FaceOverlayFilter,ZBarFilter等)
内置模块Kurento团队开发的额外模块,用于增强Kurento Media Server的基本功能。到目前为止,有四个内置模块,分别是:
kms-platedetector:用于检测视频流中的车牌的过滤器。
kms-pointerdetector:基于颜色跟踪检测视频流中指针的过滤器。
kms-chroma:过滤器,它在顶层使用颜色范围并使之透明,从而在后面显示另一个图像。
kms-crowddetector:用于检测视频流中人聚集的过滤器。
定制模块

 docker run --name kms -d -p 8888:8888 \
  -e KMS_STUN_IP= \
  -e KMS_STUN_PORT=3478 \
  -e KMS_TURN_URL=user@password:urlorIp:3478 \
   kurento/kurento-media-server:latest

  -e KMS_NETWORK_INTERFACES= \
  -e KMS_EXTERNAL_ADDRESS= \
  -e KMS_MIN_PORT= \
  -e KMS_MAX_PORT= \
  -e KMS_MTU=1200 \
    kurento/kurento-media-server:latest
配制文件位置
/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
/etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini
#查看KMS日志
docker logs kms
#实时查看:
docker logs -f kms
日志输出
    docker logs --follow kms >"kms-$(date '+%Y%m%dT%H%M%S').log" 2>&1

    检查KMS是否已启动并正在侦听连接,请使用以下命令:
curl \
    --include \
    --header "Connection: Upgrade" \
    --header "Upgrade: websocket" \
    --header "Host: 127.0.0.1:8888" \
    --header "Origin: 127.0.0.1" \
    http://127.0.0.1:8888/kurento
应该得到类似于以下内容的响应:
HTTP/1.1 500 Internal Server Error
Server: WebSocket++/0.7.0

#进入镜像
docker exec -it kms /bin/bash
#安装vim
apt-get update
apt-get install vim
#进入配置文件夹
cd /etc/kurento/modules/kurento/
#编辑配置文件
vim WebRtcEndpoint.conf.ini
stunServerAddress=xx.xx.xx.xx
stunServerPort=pp
turnURL=username:userpwd@xx.xx.xx.xx:pp?transport=tcp
or
修改docker运行的kms配置文件方法
1.复制容器中的 配置文件到 宿主机中
docker cp  kms:/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini  ~/WebRtcEndpoint.conf.ini
2.修改配置文件
vim ~/WebRtcEndpoint.conf.ini
3.宿主机配置文件 复制到 kms容器中
 docker cp ~/WebRtcEndpoint.conf.ini kms:/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini

#查看当前启动的容器
docker ps
docker restart  {kurento容器ID}

kurento相关配置
1、Kurento Media Server 日志
Kurento Media Server日志文件存储在 /var/log/kurento-media-server/文件夹中。 此文件夹的内容如下:
    media-server_.<log_number>.<kms_pid>.log: Kurento Media Server的当前日志
    media-server_error.log: 第三方错误
    logs: 包含KMS已旋转日志的文件夹
2、Kurento Media Server 配置
    /etc/default/kurento-media-server 默认配置
    /etc/kurento/kurento.conf.json 通用配置
    /etc/kurento/modules/kurento/MediaElement.conf.ini Media Elements 通用参数。
    /etc/kurento/modules/kurento/SdpEndpoint.conf.ini SdpEndpoints的音频/视频参数( 例如: WebRtcEndpoint and RtpEndpoint)。
    /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini WebRtcEndpoint 特定参数。
    /etc/kurento/modules/kurento/HttpEndpoint.conf.ini HttpEndpoint 特定参数。

#### kurento-hello-world
““
git clone https://github.com/Kurento/kurento-tutorial-java.git
cd kurento-tutorial-java/kurento-hello-world
vim src/main/resources/static/js/index.js
在函数function uiStart()里,增加一个叫iceservers的变量,格式如下:
var iceservers={
“iceServers”:[
{
urls:”stun:xx.xx.xx.xx:3478″
},
{
urls:[“turn:xx.xx.xx.xx:3478″]
username:”xxxx”,
credential: “xxxx”
}
]
}
再修改底下的options变量:
const options = {
localVideo: uiLocalVideo,
remoteVideo: uiRemoteVideo,
mediaConstraints: { audio: true, video: true },
onicecandidate: (candidate) => sendMessage({
id: ‘ADD_ICE_CANDIDATE’,
candidate: candidate,
}),
configuration: iceservers //修改在这里,增加了一个configuration的key
};

启动项目
mvn -U clean spring-boot:run -Dkms.url=ws://xx.xx.xx.xx:8888/kurento

用 idea 打开 kurento-hello-world 项目,下载 maven 依赖完成后,在 run configurations 中添加 new configurations。
选择 maven , command line 中输入:
spring-boot:run -Dkms.url=ws://:8888/kurento # 这里的 public-ip 添你安装 kms 的服务器公网 ip 地址

启动完之后用谷歌或者火狐浏览器打开demo页面https://localhost:8443/
点击start启动

运行 hello world 示例时,会遇到 使用websocket传输内容过长的问题
//项目中创建 package org.kurento.tutorial.helloworld.config
//config 包下创建类
package org.kurento.tutorial.helloworld.config;

@Configuration
//@ComponentScan
//@EnableAutoConfiguration
public class WebAppRootContext implements ServletContextInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
System.out.println(“org.apache.tomcat.websocket.textBufferSize”);
servletContext.addListener(WebAppRootListener.class);
servletContext.setInitParameter(“org.apache.tomcat.websocket.textBufferSize”,”1024000″);
}

}
““

API Java SDK for Kurento Media Server

https://github.com/Kurento/kurento-java

Kurento tutorials for Node JS

https://github.com/Kurento/kurento-tutorial-node

信令服务器与web客户端 kurento-room

https://github.com/Kurento/kurento-room

NUBOMEDIA

NUBOMEDIA Autonomous Installer
https://nubomedia.readthedocs.io/en/latest/tools/autonomous-installer/

Android客户端开源库

https://github.com/nubomedia-vtt/nubo-test

iOS客户端开源库

https://github.com/nubomediaTI/Kurento-iOS

ffmpeg转发模块

利用ffmpeg可执行文件将本地RTP流封装转发成RTMP推送出去,具体可以参考这个开源工程:
kurento-rtmp https://github.com/godka/kurento-rtmp

gstreamer转发模块

RTP解包 —— 音视频转换 —— FLV封包 —— RTMP推流

WIN7用户目录位置要怎么更改到D盘里

  1. 去掉Administrator“帐户已禁用”之前的勾,而后关闭“计算机管理器”;

  2. 注销当前用户(注意,不是“切换用户”),而后以“Administrator”登录

  3. robocopy “C:\Users” “D:\Users” /E /COPYALL /XJ /XD “C:\Users\Administrator”

  4. 注销Administrator,重新使用用户名登录;

  5. 以管理员身份打开一个DOS窗口,输入以下命令:
    rmdir “C:\Users” /S /Q
    mklink /J “C:\Users” “D:\Users”

Vue调试神器vue-devtools

vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率。接下来我们就介绍一下vue-devtools的安装。

chrome商店直接安装
vue-devtools可以从chrome商店直接下载安装,非常简单,这里就不过多介绍了。不过要注意的一点就是,需要翻墙才能下载。

手动安装

第一步:找到vue-devtools的github项目,并将其clone到本地. vue-devtools
git clone https://github.com/vuejs/vue-devtools.git
第二步:安装项目所需要的npm包
npm install //如果太慢的话,可以安装一个cnpm, 然后命令换成 cnpm install
第三步:编译项目文件
npm run build
第四步:添加至chrome游览器
游览器输入地址“chrome://extensions/”进入扩展程序页面,点击“加载已解压的扩展程序…”按钮,选择vue-devtools>shells下的chrome文件夹。

还附上了一个.crx文件,在chrome拓展程序页面上把文件拖进去即可安装。

链接:https://pan.baidu.com/s/139hspAnspD7bJbo81xigmg 密码:1hsv

Ubuntu修改系统时间

1 Ubuntu的时间分类
    1.Ubuntu时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。
    2.查看系统时间:date -R
    3.查看硬件时间: sudo hwclock --show



2 修改Ubuntu系统时间
2.1 修改时间
    1. tzselect
    2. 依次选择4->9->1->1 #Asia->China-> Beijing->yes


2.2 复制文件到/etc目录下
sudo cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

2.3 查看修改结果
date -R

3 修改Ubuntu硬件时间
sudo date -s MM/DD/YY //修改日期
sudo date -s hh:mm:ss //修改时间
sudo hwclock --systohc //修改生效

apt-get install -y tzdata
dpkg-reconfigure tzdata

新版timedatectl
timedatectl set-time ’16:10:40 2015-11-20′
timedatectl set-time 15:58:30
timedatectl set-time 20151120
将你的硬件时钟设置为协调世界时(UTC):
timedatectl set-local-rtc 0
要开始自动时间同步到远程NTP服务器,在终端键入以下命令。
timedatectl set-ntp true
要禁用NTP时间同步,在终端键入以下命令。
timedatectl set-ntp false
查看状态
timedatectl status

timedatectl 和 timesyncd 用来获取时间的 nameserver 可以通过 /etc/systemd/timesyncd.conf 来指定,另外在 /etc/systemd/timesyncd.conf.d/ 下还有灵活的附加配置文件

老的同步
apt install ntp ntpdate -y
选择一台服务作为 ntp 时间服务器,修改/etc/ntp.conf文件,删除:
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
改为 pool
server ntp3.aliyun.com iburst
其它服务 pool
server 178.100.101.6 prefer
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
去掉#打开注释,并将其ip修改服务器所在网段,
restrict 178.100.0.0 mask 255.255.0.0 nomodify notrap

在集群中的其他服务器上,也要修改此文件,删除掉:
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
加入:
server 192.168.210.101 prefer

集群中的所有服务器上执行如下命令:
service ntpd restart /etc/init.d/ntp restart
systemctl disable chronyd.service
chkconfig –level 345 ntpd on

集群中192.168.210.101以外的服务器上执行:
ntpq -p

ntpdate 178.100.101.6
sudo hwclock -w
客户端同时时出现:no server suitable for synchronization found 错误提示
在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误

如何知道何时ntp server完成了和自身同步的过程呢?
  在ntp server上使用命令:
  #ntpq -p
查看所有服务
service –status-all

k8s卸载清理

k8s 节点删除

kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>
kubeadm reset

若需要重新加入 ,则再次执行 kubeadm init or kubeadm join

清理 Pods

kubectl delete node --all
rm -r /var/etcd/backups/* 删除备份。

卸载清理K8S

kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd

Ubuntu自定桌面主题

Ubuntu18.04 默认的桌面环境是 gnome3,相比较 unity 和 KDE,笔者更喜欢 gnome,unity 看起来有点楞,KDE 又有些复杂,不够简洁。

  1. 安装 gnome-tweaks
    在 Ubuntu 的应用商店中搜索 gnome-tweaks,安装即可。
    安装完成后打开 gnome-tweaks,Appearance 标签下的 shell 选项是 disable 的,参见 这里
    自行解决。

  2. dash-to-panel 插件安装
    我觉得,插件有这一个就够了。
    genome 桌面顶部会有个状态栏,然后还会有个任务栏,对于不大的屏幕来说,简直是浪费空间,而且丑逼。相较而言,Windows 的处理方式,我就觉得很好,而 dash-to-panel 插件,就做了这样一件事,合并两栏。

    1. 下载
      在 这里 下载相应版本的插件。
      下载链接:https://www.ubuntu.com/download/desktop

    2. 安装
      然后解压,解压后将文件夹的名字改为 dash-to-panel@jderose9.github.com 这个形式, 然后放到 ~/.local/share/gnome-shell/extensions/ 路径下,这个时候,打开 gnome-tweaks 后,就可以在 Extensions 的标签下看到看到该插件了,enable 就可以了。

  3. 安装 vimix 主题
    提供了各种安装方式,按照文档安装就好了,这个没啥问题。
    安装完成后,打开 gnome-tweaks 的 Appearance 标签下,分别在 Applications 和 Shell 选项里选择 vimix 相关的主题就好了,笔者选的是 Vimix-Laptop。

  4. 安装 vimix 图标主题
    提供了各种安装方式,按照文档操作就好了

CentOS6.5升级内核 安装Docker

查看系统版本

lsb_release -a
uname
rpm -q redhat-release
cat /proc/version

升级内核

vi /etc/sysconfig/network-scripts/ifcfg-eth0 配制DNS
yum update nss
rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 导入KEY
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm 安装ELRepo
yum –enablerepo=elrepo-kernel install kernel-lt –y 安装内核
vi /etc/grub.conf # 改为default=0 修改引导文件,将默认引导改为0
reboot 启完成后查看内核版本

安装docker

yum install docker-io
提示错误:No package docker-io available,则运行
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install epel-release
yum -y install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
service docker start
查看已安装的包:
yum list installed | grep docker
删除软件包:
yum -y remove docker-io.x86_64
删除镜像/容器:
rm -rf /var/lib/docker

Error

docker 安装之后,通过命令查看docker相关信息时,可能会出现错误:Get http:///var/run/docker.sock/v1.19/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
服务无法正常停止或重启,可能就是系统环境出现了问题,
You may have to enable the public_ol6_latest repo in order to get this package.
sudo yum-config-manager –enable public_ol6_latest
And then install the package:
sudo yum install device-mapper-event-libs

Windows Server 2008 R2 SN

Windows Server 2008 R2 激活码,无需破解,直接使用

  1. 下面的激活码,有180天试用期
    Windows Server 2008 R2 Web: KBV3Q-DJ8W7-VPB64-V88KG-82C49
    Windows Server 2008 R2 Standard: 4GGC4-9947F-FWFP3-78P6F-J9HDR
    Windows Server 2008 R2 Enterprise: 7PJBC-63K3J-62TTK-XF46D-W3WMD
    Windows Server 2008 R2 Datacenter: QX7TD-2CMJR-D7WWY-KVCYC-6D2YT

  2. 在180天试用期即将结束时,在命令行模式下,输入“slmgr.vbs /rearm”后,重启电脑,重新输入上面的序列号,剩余时间又恢复到180天。微软官方文档中声明该命令只能重复使用5次。

  3. 上面的方法5次后,此后将无法再次使用。就要进行下一步,修改注册表中的一处键值(SkipRearm),以后就可以再次使用“Rearm”的命令,这个键值总共可以修改8次。

win2008r2激活码有两种,一种是server2008永久密钥,另一种是kms安装密钥

Winserver2008序列号说明:server2008永久密钥有激活次数限制,可能失效。kms激活密钥是微软官方提供,没有激活次数限制,永久有效。

一、windows server 2008/R2 批量授权版VL 永久序列号
Server 2008 R2 Std and Ent Volume MAK:标准版和企业版
[Key]:HR6PW-GDXKC-BXVGJ-PRWDX-B3C68 [剩余次数:400+]
[Key]:74BV6-J6RV8-X669X-TWXJ3-6WYQG [剩余次数:40+]
[Key]:C38C9-RPMJY-JC2F8-YRWMG-8G864 [剩余次数:40+]
Server 2008 R2 DC and IA64 Volume MAK:
[Key]:BTPC8-738CF-KC4D4-K7GX6-RFJY8 [剩余次数:40+]
[Key]:J9FC3-JV743-MXQ4D-KDCQT-MMQV9 [剩余次数:40+]
Server 2008 R2 Web and CC Volume MAK:
[Key]:6KWRD-PP7K8-7BKR6-GW9FC-96P24 [剩余次数:40+]
[Key]:7WMCT-PPJX7-B3BVH-7W8JT-D4G48 [剩余次数:40+]
[Key]:QYXXF-T2DR9-MXFP9-KF2XP-89Q2T [剩余次数:40+]
Server 2008 Standard & Enterprise MAK:
[Key]:BC4DK-3FV3H-96KDQ-2YQ74-GXV2R [剩余次数:400+]
[Key]:KF36P-T8CH4-7B844-B8BW7-VWDBB [剩余次数:40+]
Windows Web & Compute Cluster Server 2008 MAK:
[Key]:37CW9-K88BH-3W9XB-QXB9K-GW9T4 [剩余次数:40+]
[Key]:D9QWP-YHC9P-8RK27-B2C27-DTMTV [剩余次数:40+]

二、windows server 2008/R2 批量授权版KMS安装密钥
1、Windows Server 2008 R2
Windows Server 2008 R2 Web 版:6TPJF-RBVHG-WBW2R-86QPH-6RTM4
Windows Server 2008 R2 HPC 版:TT8MH-CG224-D3D7Q-498W2-9QCTX
WindowsServer 2008 R2 Standard:YC6KT-GKW9T-YTKYR-T4X34-R7VHC
WindowsServer 2008 R2 企业版:489J6-VHDMP-X63PK-3K798-CPX3Y
WindowsServer 2008 R2 Datacenter:74YFP-3QFB3-KQT8W-PMXWJ-7M648
面向基于 Itanium 系统的 Windows Server 2008 R2:GT63C-RJFQ3-4GMB6-BRFB9-CB83V
2、Windows Server 2008
Windows Web Server 2008:WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 Standard:TM24T-X9RMF-VWXK6-X8JC9-BFGM2
不带 Hyper-V 的 Windows Server 2008 Standard:W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Server 2008 企业版:YQGMW-MPWTJ-34KDK-48M3W-X4Q6V
不带 Hyper-V 的 Windows Server 2008 企业版:39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 HPC:RCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 Datacenter:7M67G-PC374-GR742-YH8V4-TCBY3
不带 Hyper-V 的 Windows Server 2008 Datacenter:22XQ2-VRXRG-P8D42-K34TD-G3QQC
面向基于 Itanium 系统的 Windows Server 2008:4DWFP-JF3DJ-B7DTH-78FJB-PDRHK
三、windows server 2008/R2 KMS密钥激活步骤
1、点击开始图标打开开始菜单,在搜索框输入cmd,右键cmd,选择“以管理员身份运行”;
2、打开命令提示符,依次执行下面的代码。分别表示:安装server2008密钥,设置kms服务器,激活server2008,查询激活期限,kms一般是180天,到期后再次激活。
slmgr /ipk 489J6-VHDMP-X63PK-3K798-CPX3Y
slmgr /skms zh.us.to
slmgr /ato
slmgr /xpr

Mongo

mongod docker

4.2.2-bionic, 4.2-bionic, 4-bionic, bionic

docker run -itd --name mongo -p 27017:27017 -v /home/mongo/data:/data/db --restart always mongo --auth
-auth:需要密码才能访问容器服务。

接着使用以下命令添加用户和设置密码,并且尝试连接。

$ docker exec -it mongo mongo admin
创建一个名为 admin,密码为 123456 的用户。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')

创建有可读写权限的用户. 对于一个特定的数据库, 比如'demo'
 db.createUser({
     user: 'test',
     pwd: '123456',
     roles: [{role: "read", db: "demo"}]
 })

数据库的建立
use demo;
    mongo 是否正常启动的校验
    先写入一条数据
    db.info.save({name: 'test', age: '22'})
    查看写入的数据
    db.info.find();
    结果如下
    { "_id" : ObjectId("5c973b81de96d4661a1c1831"), "name" : "test", "age" : "22" }
远程连接的开启
在 `mongodb` 的容器当中
#更新源
apt-get update
# 安装 vim
apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig
将其中的
bindIp: 127.0.0.1
注释掉`# bindIp: 127.0.0.1` 或者改成`bindIp: 0.0.0.0` 即可开启远程连接