centos7.9搭建mediasoup-demo环境

安装前准备服务器环境

在ubuntu和centos8上都很容易搭建mediasoup-demo项目,但在centos7很难安装上,在此记录centos7.9上搭建mediasoup。
本次搭建centos7.9所需环境:

依赖版本
gcc8.3.1
python33.8.12
node14.19.3

gcc

gcc需升级到4.9版本以上 ,本次安装使用版本为gcc 8.3.1

$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-8-gcc*
$ scl enable devtoolset-8 bash
$ gcc -v

python3

python3需升级到3.7版本以上 ,本次安装使用版本为python 3.8.12

安装python3的依赖
$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
$ yum install libffi-devel -y

下载python3安装包
$ wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz
$ tar -xvJf Python-3.8.12.tar.xz

编译安装
$ mkdir /usr/local/python3 #创建编译安装目录
$ cd Python-3.8.12
$ ./configure --prefix=/usr/local/python3
$ make && make install

创建软连接
$ ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
$ ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

验证是否成功
$ python3 -V
$ pip3 -V

node

node需升级到10版本以上 ,本次安装使用版本为node14.19.3

下载node安装包
$ wget https://nodejs.org/dist/v14.19.3/node-v14.19.3-linux-x64.tar.xz
$ tar xvf node-v14.19.3-linux-x64.tar.xz

创建软链接
$ ln -s /root/node-v14.19.3-linux-x64/bin/node /usr/local/bin/node
$ ln -s /root/node-v14.19.3-linux-x64/bin/npm /usr/local/bin/npm

验证是否成功
$ node -v
$ npm -v

安装 cnpm
$ npm install -g cnpm --registry=https://registry.npm.taobao.org

mediasoup-demo搭建

github克隆代码

$ git clone https://github.com/versatica/mediasoup-demo.git
$ cd mediasoup-demo
$ git checkout v3

服务端环境搭建

$ cd mediasoup-demo/server

修改mediasoup的版本号为3.9.1
$ vi package.json
"mediasoup": "3.9.1",

使用cnpm i安装依赖	
$ cnpm i

安装完成后,生成证书(有证书忽略)
$ mkdir certs
$ cd certs
$ openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout privkey.pem -out fullchain.pem

复制config.example.js 为config.js
$ cp config.example.js config.js
修改config.js文件中的配置(复制以下代码,修改ip地址为公网ip, 并修改证书)
$ vi config.js
	const os = require('os');
	module.exports =
	{
		domain : process.env.DOMAIN || '192.168.2.104',
		https  :
		{
			// listenIp   : '0.0.0.0',
			listenIp   : '192.168.2.104',
			// NOTE: Don't change listenPort (client app assumes 4443).
			// listenPort : process.env.PROTOO_LISTEN_PORT || 4443,
			listenPort : process.env.PROTOO_LISTEN_PORT || 4443,
			// NOTE: Set your own valid certificate files.
			tls        :
			{
				cert : process.env.HTTPS_CERT_FULLCHAIN || `${__dirname}/certs/localhost.pem`,
				key  : process.env.HTTPS_CERT_PRIVKEY || `${__dirname}/certs/localhost.key`
			}
		},
		// mediasoup settings.
		mediasoup :
		{
			// Number of mediasoup workers to launch.
			numWorkers     : Object.keys(os.cpus()).length,
			// mediasoup WorkerSettings.
			// See https://mediasoup.org/documentation/v3/mediasoup/api/#WorkerSettings
			workerSettings :
			{
				logLevel : 'warn',
				logTags  :
				[
					'info',
					'ice',
					'dtls',
					'rtp',
					'srtp',
					'rtcp',
					'rtx',
					'bwe',
					'score',
					'simulcast',
					'svc',
					'sctp'
				],
				rtcMinPort : process.env.MEDIASOUP_MIN_PORT || 40000,
				rtcMaxPort : process.env.MEDIASOUP_MAX_PORT || 49999
			},
			// mediasoup Router options.
			// See https://mediasoup.org/documentation/v3/mediasoup/api/#RouterOptions
			routerOptions :
			{
				mediaCodecs :
				[
					{
						kind      : 'audio',
						mimeType  : 'audio/opus',
						clockRate : 48000,
						channels  : 2
					},
					{
						kind       : 'video',
						mimeType   : 'video/VP8',
						clockRate  : 90000,
						parameters :
						{
							'x-google-start-bitrate' : 1000
						}
					},
					{
						kind       : 'video',
						mimeType   : 'video/VP9',
						clockRate  : 90000,
						parameters :
						{
							'profile-id'             : 2,
							'x-google-start-bitrate' : 1000
						}
					},
					{
						kind       : 'video',
						mimeType   : 'video/h264',
						clockRate  : 90000,
						parameters :
						{
							'packetization-mode'      : 1,
							'profile-level-id'        : '4d0032',
							'level-asymmetry-allowed' : 1,
							'x-google-start-bitrate'  : 1000
						}
					},
					{
						kind       : 'video',
						mimeType   : 'video/h264',
						clockRate  : 90000,
						parameters :
						{
							'packetization-mode'      : 1,
							'profile-level-id'        : '42e01f',
							'level-asymmetry-allowed' : 1,
							'x-google-start-bitrate'  : 1000
						}
					}
				]
			},
			// mediasoup WebRtcTransport options for WebRTC endpoints (mediasoup-client,
			// libmediasoupclient).
			// See https://mediasoup.org/documentation/v3/mediasoup/api/#WebRtcTransportOptions
			webRtcTransportOptions :
			{
				listenIps :
				[
					{
						ip          : process.env.MEDIASOUP_LISTEN_IP || '192.168.2.104',
						announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP || '192.168.2.104'
					}
				],
				initialAvailableOutgoingBitrate : 1000000,
				minimumAvailableOutgoingBitrate : 600000,
				maxSctpMessageSize              : 262144,
				// Additional options that are not part of WebRtcTransportOptions.
				maxIncomingBitrate              : 1500000
			},
			// mediasoup PlainTransport options for legacy RTP endpoints (FFmpeg,
			// GStreamer).
			// See https://mediasoup.org/documentation/v3/mediasoup/api/#PlainTransportOptions
			plainTransportOptions :
			{
				listenIp :
				{
					ip          : process.env.MEDIASOUP_LISTEN_IP || '192.168.2.104',
					announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP || '192.168.2.104'
				},
				maxSctpMessageSize : 262144
			}
		}
	};

启动
$ npm start

若要后台启动 将INTERACTIVE:='true' 改为 false
$ vi package.json 
"start": "DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='false'} node server.js",

客户端环境搭建

$ cd mediasoup-demo/app

修改mediasoup-client版本号
$ vi package.json
"mediasoup-client": "^3.6.48",
安装依赖
$ cnpm i
启动(默认3000端口)
npm start
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值