学着搭建流媒体服务器

article/2025/9/19 17:14:49

操作系统:NAME="openEuler",架构:aarch64,CPU 运行模式:64-bit

目前有多个开发源代码可以搭建流媒体服务,但要先依赖gcc和cmake,所以首先安装gcc和cmake,查了一通资料,cmake安装记录如下:

1、依赖环境安装

yum -y install libyaml libyaml-devel python-setuptools libcurl-devel python-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libpcap-dev*
2、下载cmake

wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

3、解压、编译和安装

tar xzvf cmake-3.5.2.tar.gz
cd cmake-3.5.2
./bootstrap
make -j 8
make install 

4、验证是否安装成功

cmake --version

以上部分原文来源于:https://blog.csdn.net/ghpanxt/article/details/119382195

gcc待更流媒体服务器ZLMediaKit在linux上部署与启动教程 - CherryHua-Blog

三、组建流媒体服务器

参考:组建流媒体服务器(手把手搭建RTSP流媒体服务器)

选取ZLMediaKit这个软件建立服务器服务

ZLMediaKit的github链接:https://github.com/xiongziliang/ZLMediaKit

安装openssl,参考资料:https://www.cnblogs.com/Ressurection-20191320/p/15451804.html

1、查看是否已经安装openssl

2、下载openssl

wget http://www.openssl.org/source/openssl-1.1.1c.tar.gz
tar -zxvf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c
make
make install

3、安装ffmpeg

安装ffmpeg走了很多弯路,最后是按照官网给出步骤进行安装,地址如下:

CompilationGuide/Centos – FFmpeg

为防止网页以后访问不了,简单记录一下

(1)安装环境,就是gcc

# yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel
(2)建立一个文件夹放各种库文件
mkdir ~/ffmpeg_sources

 (3)安装各种编译时需要的库

-----NASM-----
cd ~/ffmpeg_sources
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2
tar xjvf nasm-2.15.05.tar.bz2
cd nasm-2.15.05
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install-----Yasm-----
cd ~/ffmpeg_sources
curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install-----libx264---
cd ~/ffmpeg_sources
git clone --branch stable --depth 1 https://code.videolan.org/videolan/x264.git
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install-----libx265----
cd ~/ffmpeg_sources
git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git
cd ~/ffmpeg_sources/x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install-----libfdk_aac-----
cd ~/ffmpeg_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install------libmp3lame----
cd ~/ffmpeg_sources
curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install-----libopus--------
cd ~/ffmpeg_sources
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar xzvf opus-1.3.1.tar.gz
cd opus-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install-----libvpx--------
cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install

按照官网一步一步下来才能正确解释h265、h264两种编码

(4)安装ffmepg

------FFmpeg-----
cd ~/ffmpeg_sources
curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \--prefix="$HOME/ffmpeg_build" \--pkg-config-flags="--static" \--extra-cflags="-I$HOME/ffmpeg_build/include" \--extra-ldflags="-L$HOME/ffmpeg_build/lib" \--extra-libs=-lpthread \--extra-libs=-lm \--bindir="$HOME/bin" \--enable-gpl \--enable-libfdk_aac \--enable-libfreetype \--enable-libmp3lame \--enable-libopus \--enable-libvpx \--enable-libx264 \--enable-libx265 \--enable-nonfree
make
make install
hash -d ffmpeg

5、搭建RTSP流媒体服务器

(1)在/home/中创建一个文件夹,进入目录然后下载

mkdir ZLMediaKit_Stream_Server
cd ZLMediaKit_Stream_Server
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git
cd ZLMediaKit
git submodule update --init

非常重要的命令(不要忘记输入):git submodule update --init

(2)构建工程

mkdir build
cd build
cmake ..
make -j4

make完成后界面

 (3)开启服务

重回/ZLMediaKit/文件夹,输入以下指令

cd release/linux/Debug
./MediaServer -d &

出现如下界面

 

查看MediaServer相关的命令,输入命令:

./MediaServer -h

如果端口被占用,则修改配置文件,文件在./MediaServer同一目录,使用vi命令修改内容

(6)测试

本人目前使用win7系统的台式机,下载一个vlc软件,安装好

在服务器安装好ffmpeg的文件夹输入命令如下

ffmpeg -re -i /root/test.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

显示

 台式机打开vlc播放器输入流地址,无法播放,同时服务器显示如下:

  以为不成功出错,到处找这个broken pipe的解决方案,直到突然想起是否服务器端口未开放,查看端口情况,554端口是开放的,再查防火墙,发现防火墙已开启,但没有相应开放的策略,于是添加策略,具体做法参考:OpenEuler 防火墙放通端口 (以 8084 为例) - 简书

开放防火墙后,再用vlc播放,终于成功

 以上就是部署的国产,前后花费我3天时间,查找大量的资料,不过最后能成功实现还是挺开心的,ffplay在ffmpeg中不是默认安装的东西,还需要SDL2的支持,目前还没实现成功编译出来,等搞出来再记录下来吧。


http://chatgpt.dhexx.cn/article/6aQa6DL2.shtml

相关文章

js逆向工具-初学AST解混淆

目录 一、AST简单了解二、babel环境安装三、快速入门例子1、入门例子讲解:修改变量值2、入门案例代码:修改变量值 四、实际案例1-ob混淆之ast还原1、数组 移位自执行函数 解密字符串函数 还原2、定义的对象Object有规律的key和value 还原3、while swi…

推荐.Net、C# 逆向反编译四大工具利器

转:https://blog.csdn.net/kongwei521/article/details/54927689 在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需解决、或者由于电脑挂了、旧代码覆盖新代码,而在这种情况下,我们不能直接…

某科技js逆向

分析 地址->https://qimingp*.cn/fino*a/project/ 捕获ajax请求,发现返回的数据是加密的,如下图: 打开搜索,定位如下: 经过查找,定位到11058行,如下: 分析代码,发现首…

BUUCTF 逆向工程(reverse)之内涵的软件

用IDA32位打开 一看到这个就是知道这里是获取flag的关键(因为花括号{})。一开始以为是用了某种加密方式需要转换一下。结果它显示的:{49d3c93df25caad81232130f3d2ebfad}这部分就是flag。 所以这题的flag为:flag{49d3c93df25caa…

010Editor逆向分析

主要内容: 010Editor介绍 16进制编辑器:16进制修改、文本修改、模板解析各种文件格式、对比文件 010暴力破解分析 1、找到注册的窗口 2、测试注册窗口的反应 3、根据反应做出下一步分析 猜测API,API下断点动态调试 敏感字符串,程序…

Web前端——CSS伪类和伪元素

CSS伪类: 1.伪类的概念: 可以理解为描述元素的某种状态,用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。 2.伪类的语法: 标签:伪类{设置的样式,伪类…

CSS伪类

CSS中伪选择器有两种分别是伪元素选择器和伪类选择器。为了向后续版本兼容,伪元素选择器常用"::"开头,而伪类选择器用“:”开头。本篇主要讲解以下伪类选择器: :first-child:last-childonly-childonly-of-type:nth-child(n)nth-la…

【JavaScript 逆向】AST 技术反混淆

前言 通过浏览器工具可以清楚的看到网站正在运行的 HTML 和 JavaScript 代码,所以对 JavaScript 代码进行混淆处理是一些网站常用的反爬措施,例如下文介绍到的字符串混淆、控制流平坦化等,这使得 JavaScript 的可读性变得很差,难以…

Css预编译神器

最近,有靓仔吐槽在编译css代码时,每次写选择器都会变成CV大神,虽说有CV加持但是呢依然会觉得很麻烦,毕竟手速不像年轻时候那样为所欲为 在这里呢给推荐大家用一款神级插件,也是小编参与完成的轻量级插件–sass&#x…

CSS 伪类

CSS 伪类 CSS 伪类是添加到选择器的关键字,用于指定所选元素的特殊状态。例如,伪类 :hover 可以用于选择一个按钮,当用户的指针悬停在按钮上时,设置此按钮的样式。 举例说明: button:hover {color: blue; }伪类由冒号&#xff…

逆向分析并修改Hello World程序《逆向工程核心原理》《软件逆向工程原理与实践》

文章目录 OllyDbg窗口及快捷键步骤1:VS生成需逆向的文件步骤2:OllyDbg中打开该程序的exe文件,找到需修改的位置步骤3:修改修改1:修改指令修改2:修改字符串修改3:输出任意英文 软件逆向工程原理与…

js逆向案例-css字体反爬

目录 一、反爬点二、反爬分析1、js逆向解密响应参数2、css字体伪元素分析一、反爬点 案例网站响应参数js加密, css字体伪元素隐藏,以及style取值等逻辑判断 二、反爬分析 1、js逆

SQL 结构化查询语言

导读 MySql是我们常用的数据库,javaEE常用几款(Oracle,PostgreSQL,DB2或IBM),SQLite是用于嵌入式设备里的小型数据库,例如Android或IOS,而掌握SQL语句,就相当于掌握了所有的常见关系化数据库,需要同学们重点掌握以及经常复习 MySQL数据库服务器、数据库和表的关系 一般一个项…

《数据库系统》(三) 结构化查询语言

hello大家好,今天我们来学习结构化查询语言。教妹学数据库,没见过这么酷炫的标题吧?“语不惊人死不休”,没错,标题就是这么酷炫。 我的妹妹小埋18岁,校园中女神一般的存在,成绩优异体育万能,个性温柔正直善良。然而,只有我知道,众人眼中光芒万丈的小埋,在过去是一个…

mysql 结构化数据库_【MySQL】——MySQL数据库和SQL结构化查询语言概述

【MySQL】——MySQL数据库和SQL结构化查询语言概述 【MySQL】——MySQL数据库和SQL结构化查询语言概述 文章目录数据库和SQL语言【1】数据库概述 【2】SQL语言 【3】MySQL数据库 【4】启动/停止MySQL服务 【1】数据库概述 数据的传输:数据库 —> Web服务器 —>…

MySQL结构化查询语言

结构化查询语言sql包含以下四部分: 1.DDL //数据定义语言,create,drop,alter 2.DML //数据操作语言,insert,update,delete 3.DQL //数据查询语言,select 4.DCL //数据控制语言,grant,commit,rollback 以下就增删查…

结构化查询语言SQL基本功能及其概念

SQL语法 可以把SQL分为两部分数据操作语言DML和数据定义语言DDL。 SQL(结构化查询语言)有用于执行查询、更新、删除、插入记录的语法。 SQL的DML部分: select-从数据库表中获取数据。insert into-向数据库表中插入数据update-更新数据库表中…

Rasa中文聊天机器人开发指南(3):Core篇

文章目录 1. 对话管理1.1 多轮对话1.2 对话管理 2. Rasa Core2.1 Stories2.2 Domain2.3 Responses2.4 Actions2.5 Policies2.6 Slots2.6.1 Slots Type2.6.2 Slots Set2.6.3 Slots Get 2.7 Form2.8 Interactive Learning 3. 改进ChitChatAssistant项目3.1 config.yml3.2 weather…

Rasa开发使用 Rasa_NLU及Rasa_Core模型训练与测试

文章目录 Rasa术语 Rasa_NLU1. Pipeline2. 准备工作:训练MITIE模型文件3. rasa_nlu 语料4. 训练模型5. 测试验证 Rasa Core1. Stories可视化stories 2. Domain3. 训练对话模型测试对话模型 测试聊天机器人 Rasa Rasa是一个开源机器学习框架,用于构建上下…

浅读Rasa3.2.5源码(rasa train、rasa shell)

目录 浅读Rasa3.2.5源码(rasa train、rasa shell)一、 分析 __main__.py(1). 解析main.py的部分代码(2). rasa常用命令 二、 训练阶段(1). 准备训练数据(2). …