0%

视频语音实时可视化部署记录

公司项目所需要安装的一些软件,以作记录,方便后期新增环境操作。

  1. SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。https://github.com/ossrs/srs

  2. FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。https://www.ffmpeg.org/

  3. ImageMagick:免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。http://www.imagemagick.org/download/

  4. GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装、GM更有效率、GM的手册非常丰富GraphicsMagick的命令与ImageMagick基本是一样的。http://www.graphicsmagick.org/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1.裁切
gm convert -crop 100x100+20+50 xdr.png xdr1.png
100x100:指要裁切图片的大小;这里不要用*,要用字母X

20+50:裁切的坐标,xy

xdr.png:要裁切图片的名字;

xdr1.png:裁切后图片的名字;

2.格式转换

gm convert a.bmp a.jpg
由a.bmp图片转换为a.jpg.

3.缩略图(640x480)

gm convert a.jpg -geometry 640x480^ -gravity center -extent 640x480 b.jpg
由a.jpg转换为640x480的b.jpg

4.追加文字水印

gm convert a.jpg -font Aricl -fill red -pointsize 33 -draw "text 1600,50 'wenzi'" b.jpg
a.jpg图片用 Aricl字体 红色 大小33 文字从1600 50 坐标开始 内容为wnezi 转换为b.jpg
  1. jpegsrc:jpegsrc是用软件实现JPEG图像编码、解码、转码。https://fossies.org/linux/misc/jpegsrc.v9c.tar.gz/

jdk

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

添加环境变量

1
2
3
4
5
#注意jdk版本可能不一致,需修改
export JAVA_HOME=/usr/local/jdk1.8.0_181/
export JRE_HOME=/usr/local/jdk1.8.0_181/jre/
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

ffmpeg

可参考这里:https://www.ywthings.com/2018/10/23/ffmpeg-install-static-release.html
下载地址:https://www.johnvansickle.com/ffmpeg/

添加环境变量

1
export PATH="/usr/local/ffmpeg/bin:$PATH"

测试

1
2
# amr转换mp3
ffmpeg -i 111.amr test.mp3

srs

下载地址:https://github.com/ossrs/srs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#安装
cd
git clone https://github.com/ossrs/srs
cd srs/trunk
./configure --full && make

#复制
mkdir /usr/local/srs
cp -a /root/srs/trunk/{conf,etc,objs} /usr/local/srs/


#修改启动配置文件路径
ln -s /usr/local/srs/etc/init.d/srs /etc/init.d/srs
vim /etc/init.d/srs
ROOT="/usr/local/srs/"

可能出现编译错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#问题1:
Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure with --disable-asm.
解决:
rpm -ivh https://www.nasm.us/pub/nasm/releasebuilds/2.14/linux/nasm-2.14-0.fc27.x86_64.rpm


问题2:
ERROR: speex not found using pkg-config

If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
solve the problem.
解决:
yum install -y speex speex-devel

问题3:
ERROR: bzlib requested but not found
解决:
yum install -y bzip2 bzip2-devel

srs配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
listen              1935;
max_connections 1000;
srs_log_tank file;
srs_log_file ./objs/srs.log;
http_api {
enabled on;
listen 1985;
}
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
stats {
network 0;
disk sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
hstrs on;
}
# mix_correct on;
http_hooks {
enabled on;
on_publish http://10.10.0.10:1241/callbackOnPublish;
on_unpublish http://10.10.0.10:1241/callbackOnUnpublish;
on_play http://10.10.0.10:1241/callbackOnPlay;
on_stop http://10.10.0.10:1241/callbackOnStop;
on_dvr http://10.10.0.10:1241/callbackOnDvr;
}
dvr {
enabled on;
dvr_path /mnt/mov/[stream]-[timestamp].flv;
dvr_plan session;
dvr_duration 30;
dvr_wait_keyframe on;
time_jitter full;
}
hls {
enabled on;
hls_path /mnt/mov;
hls_m3u8_file [stream].m3u8;
hls_ts_file [stream]-[seq].ts;
hls_fragment 10;
hls_window 60000;
# hls_on_error disconnect;
}
}

vhost bandcheck.srs.com {
enabled on;
chunk_size 65000;
bandcheck {
enabled on;
key "35c9b402c12a7246868752e2878f7e0e";
interval 30;
limit_kbps 4000;
}
}

jpegsrc(可不安装)

下载地址:http://www.ijg.org/files/jpegsrc.v9c.tar.gz

1
2
3
4
5
6
7
#编译安装

tar xf jpegsrc.v9c.tar.gz
cd jpeg-9c
./configure
make libdir=/usr/lib64
make libdir=/usr/lib64 install

ImageMagick(可不安装)

下载地址:https://imagemagick.org/download/ImageMagick.tar.gz

yum安装

1
2
3
4
5
yum install php-pear php-devel gcc 

yum install ImageMagick ImageMagick-devel ImageMagick-perl

convert --version

源码编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#编译环境
yum groupinstall 'Development Tools'
yum -y install bzip2-devel freetype-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel zlib-devel ghostscript-devel djvulibre-devel libwmf-devel jasper-devel libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms-devel libxml2-devel librsvg2-devel OpenEXR-devel php-devel


#编译安装

wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xvzf ImageMagick.tar.gz
cd ImageMagick*
./configure --prefix=/usr/local/imagemagick
make && make install

#查看版本号
magick -version

GraphicsMagick

下载地址:https://nchc.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.31/GraphicsMagick-1.3.31.tar.xz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#安装相关依赖
#yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel

#编译安装

tar xf GraphicsMagick-1.3.31.tar.xz
cd GraphicsMagick-1.3.31
./configure --prefix=/usr/local/gm --with-jpeg=yes --with-png=yes
make && make install

#添加环境变量
vim /etc/profile

export GM_HOME=/usr/local/gm
export PATH=$GM_HOME/bin:$GM_HOME/lib:$PATH
export PATH=/usr/local/gm/bin:$PATH

#查看是否安装成功(png、jpeg)
gm version

mysql

参考这里:https://www.ywthings.com/2018/11/24/yum-install-mysql5-6.html

memcached

下载地址:http://www.memcached.org/files/memcached-1.5.12.tar.gz

安装 libevent

1
2
3
4
5
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz 
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable
./configure --prefix=/usr/local/libevent
make && make install

安装 Memcached

1
2
3
4
5
wget http://www.memcached.org/files/memcached-1.5.12.tar.gz
tar -zxvf memcached-1.5.12.tar.gz
cd memcached-1.5.12
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
make && make install

启动 Memcached

1
2
3
4
5
6
7
8
9
-d是启动一个守护进程;
-m是分配给Memcache使用的内存数量,单位是MB;
-u是运行Memcache的用户;
-l是监听的服务器IP地址,可以有多个地址;
-p是设置Memcache监听的端口,,最好是1024以上的端口;
-c是最大运行的并发连接数,默认是1024;
-P是设置保存Memcache的pid文件。

/usr/local/memcached/bin/memcached -d -m 1024 -u root -l 192.168.1.44 -p 11211 -c 1024 -P /tmp/memcached.pid

mongodb

阿里云 天翼云 mongodb 2
华为云 腾讯云 mongodb >=3

mongodb2

mongodb 2 配置文件

1
2
3
4
5
6
7
dbpath = /data/mongodb/db/
logpath = /data/mongodb/logs/mongodb.log
port = 5566
fork = true
nohttpinterface = true
logappend = true
auth = true

mongodb 2 启动

1
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

mongodb 2 添加帐号密码

1
2
3
/usr/local/mongodb/bin/mongo 127.0.0.1:5566/admin
>use admin
>db.addUser('test','123456')

备注:本地连接不上,防火墙关了就可以?

mongodb3

mongodb 3 配置文件

1
2
3
4
5
6
7
port=27017
dbpath=/data/mongodb/
logpath=/data/mongodb/mongod1.log
fork=true
bind_ip=0.0.0.0
logappend=true
auth=true 第一次启动不要添加,添加认证后才启用

mongodb 3 启动

1
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

mongodb 3 添加帐号密码认证

1
2
3
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin
>use admin
> db.createUser({ user: 'root', pwd: 'test123', roles: [ { role:"root", db: "admin" } ] });

端口

需开放端口

1
2
3
4
16400 文件服务
1241 1238 通信服务
1935 1985 srs服务
因srs占用8080,web需更改端口18080 web服务

说明

1、通信服务需拷贝/lib64/libudx.so
2、内核参数,如阿里云tcp负载需添加

1
2
3
4
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0

3、两个数据库,一个全局数据库修改数据库连接表,另数据库修改流媒体信息表,一个通信信息表
4、web服务修改文件服务地址、mongodb地址、数据库地址
5、tcp服务修改memcache地址、mongodb地址、数据库地址
6、相关目录的创建,可查看文件服务配置,srs配置
7、两台以上服务负载需创建共同目录,如NFS来支撑