模拟RTSP服务器实现实时推流

news/2024/7/10 20:21:31 标签: rtsp, ffmpeg, 音频编码解码, 视频处理, ubuntu

模拟RTSP服务器实现实时推流

  • 前言
  • 1 ZLMediaKit开源项目搭建
    • 1.1 源码下载
    • 1.3 依赖库
    • 1.4 编译
    • 1.5 测试
  • 2 FFmpeg推流

前言

搭建本服务器主要是为了利用FFmpeg进行各种音视频codec的转换输出,验证客户端的解码器兼容情况。当然也可以采用其他的方案来替代。

1 ZLMediaKit开源项目搭建

1.1 源码下载

这里比较人性的一点是提供了比较详细的wiki文档

https://gitee.com/xia-chu/ZLMediaKit

编译环境是Ubuntu18.04版本,官方推荐是强烈建议使用ubuntu16或更新版本编译ZLMediaKit。

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init

1.3 依赖库

这里安装了几个比较重要的库,一个是openssl,另一个是FFmpeg,用于后续推流使用

#除了openssl,其他其实都可以不安装
sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpeg

1.4 编译

编译基本照着文档没啥大问题,接下来就是静静等着编译完成。

cd ZLMediaKit
mkdir build
cd build
#macOS下可能需要这样指定openss路径:cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/
cmake ..
make -j4

1.5 测试

编译完成后会在release目录下生成对应可执行文件
在这里插入图片描述
启动服务器:失败了查看下下面的日志,这边只报了一个端口被占用,修改下同目录下的配置文件config.ini即可。

./MediaServer

2 FFmpeg推流

这里主要是模拟mpeg4编码进行推流

ffmpeg -re -i “/home/learn/testvideo/Titanic.ts” -vcodec mpeg4 -f rtsp -rtsp_transport tcp rtsp://192.168.88.140/live/test

推流成功可以看到MediaServer下方的log:
在这里插入图片描述
rtsp监控采用的是vlc进行:
在这里插入图片描述


http://www.niftyadmin.cn/n/927496.html

相关文章

FFmpeg命令行实践

FFmpeg命令行实践1 概述2 基本原理3 命令行选项4 命令行实践4.1 音频转换4.2 视频转换4.2.1提取mkv中视频流转为h264裸流4.2.2 提取前5s时间转h2644.2.3 根据codec进行转换4.2.4 设置输出码率,帧率4.2.5 设置输出分辨率4.2.5 转yuv裸流文件5 结语1 概述 参考官方文…

Ubuntu18.04 PulseAudio实战

1 前言 2 下载编译 具体构建过程参照官方文档:https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/PulseAudioFromGit/ 2.1 下载代码 git clone git://anongit.freedesktop.org/pulseaudio/pulseaudio 2.2 编译 编译过程遇到太多错…

Ubuntu18.04 x264命令行实操

Ubuntu18.04 x264命令行实操1 源码下载编译2 基本参数介绍2.1 profile参数详解2.2 tune参数详解2.3 preset参数详解2.4 速率控制QPABRCBR2-Pass ABRCRFVBV3 命令行实践3.1 查看帮助3.2 输入文件3.2 输出文件3.3 基本命令3.4 参考文献1 源码下载编译 https://code.videolan.org…

dpkg: error processing package xxx解决方法

1 错误内容: rootxxx:/home/my_project/application-necessities# sudo apt-get -y install build-essential nghttp2 libnghttp2-dev libssl-dev Reading package lists... Done Building dependency tree Reading state information... Done build-essent…

curl: (60) SSL certificate problem: certificate has expired终极解决方案

问题: rootubuntu-64bit:/home/work/avs_project/build# curl -I https://nghttp2.org/ -v * Trying 139.162.123.134... * TCP_NODELAY set * Connected to nghttp2.org (139.162.123.134) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Ciph…

mosquitto-1.5.7交叉编译

1 下载源文件 下载地址:http://mosquitto.org/files/source/ tar -xvf mosquitto-1.5.7.tar.gz cd mosquitto-1.5.7 2 修改配置 vi config.mk #修改下面配置 WITH_SRV:no WITH_UUID:no WITH_WEBSOCKETS:no WITH_DOCS:no #添加ssl交叉编译库路径和头文件路径 CFLAGS…

设计模式初探

设计模式初探0 前言1 基础知识1.1 组合优于继承1.2 虚函数继承1.3 类之间的关系2 设计原则1.1 开放封闭原则1.2 单一职责原则1.3 接口隔离原则1.4 里氏替换原则1.5 面向接口原则1.6 依赖倒置原则1.7 封装变化点1.8 组合优于继承2 模板方法3 观察者模式4 策略模式0 前言 设计模…

设计模式之二

设计模式之二1 单例模式:2 工厂模式3 抽象工厂模式4 责任链模式5 装饰器模式1 单例模式: 很多人看到单例,马上就激动了,这题我会! 然后就是在静态全局区new了一个对象,其实单例模式存在很多陷阱。 定义&am…