Python 通过ffmpeg实现实时推流(ubuntu20.04+ffmpeg+nginx)

一. 基本概念及原理

1.1 ffmpeg简介

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

1.2 RTMP简介

RTMP协议,又称实时消息传输协议(Real Time Messaging Protocol),该协议基于TCP,是一个协议族行,用于实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信,属于应用层

1.3 OBS-studio简介

Open Broadcaster Software是一个免费的开源的视频录制和视频实时流软件。其有多种功能并广泛使用在视频采集,直播等领域。

1.4 VLC

VLC Media Player(VLC多媒体播放器),融合了FFmpeg计划的解码器与libdvdcss程序库, 是VideoLAN计划的多媒体播放器。

二. 前期准备

服务器操作系统:ubuntu 20.04

Nginx版本:nginx-1.18.0.tar.gz

RTMP模块:nginx-rtmp-module

推流工具:OBS-Studio/VLC

拉流工具:VLC

2.1 安装依赖

sudo apt install gcc make pcre pcre-devel openssl openssl-devel

此时可能出现报错:

E: Unable to locate package pcre
E: Unable to locate package pcre-devel
E: Unable to locate package openssl-devel

这个暂时先不用管。可以看到至少 sudo apt-get install openssl这个还是成功了的。

2.2 下载nginx-1.18.0.tar.gz和nginx-rtmp-module

wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz #解压
git clone https://github.com/arut/nginx-rtmp-module

2.3 配置和编译安装

#nginx源码文件夹和rtmp模块源码文件夹在同一目录下
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module
sudo make
sudo make install

可能会出现报错:

./configure: error: SSL modules require the OpenSSL library

解决办法:

sudo apt-get install libssl-dev

再次执行:

./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module
sudo make
sudo make install

2.4 查看安装结果

以下命令查看安装结果,出现版本号则证明成功:

 /usr/local/nginx/sbin/nginx -v
 #输出nginx version: nginx/1.18.0即为安装成功

在这里插入图片描述

2.5 设置Nginx开机启动

2.5.1 创建Nginx服务文件

cd /usr/lib/systemd/
mkdir && cd system
touch nginx.service
sudo vim /usr/lib/systemd/system/nginx.service

输入以下内容:

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

2.5.2 启动Nginx服务

sudo systemctl start nginx 
sudo systemctl enable nginx 

在这里插入图片描述

2.6 修改Nginx的配置文件

sudo vim /usr/local/nginx/conf/nginx.conf

阿里云安全组增加8080端口的配置:
在这里插入图片描述

2.7 测试nginx服务

重启nginx:

 sudo systemctl restart nginx   

浏览器输入云服务器公网IP,出现下图所示欢迎语句表明配置成功:
在这里插入图片描述

四. 参考文献

阿里云服务器搭建Nginx+rtmp推流服务器

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
FFmpeg是一个开源的多媒体处理工具,可以用于录制、转码和处理音视频文件。Nginx是一个快速、可靠、高性能的Web服务器,同时也可用作反向代理服务器等。 结合FFmpegNginx,可以实现音视频推流功能。具体步骤如下: 1. 配置Nginx服务器:首先需要在Nginx服务器上进行一些配置。通过编辑Nginx的配置文件,在http模块下添加rtmp模块,并设置rtmp监听的端口和应用的名称。 2. 安装FFmpeg:在推流前需要确保系统中已安装FFmpeg。如果没有安装,可以通过官方网站下载并安装对应的版本。 3. 配置FFmpeg推流:打开命令行终端,输入ffmpeg命令,并根据所需参数配置推流的源文件、输出地址、编码相关参数等。通过命令行输入ffmpeg -i 输入文件地址 -vcodec xxx -acodec xxx -f flv 输出地址 进行推流操作。 4. 启动Nginx服务器:操作系统中启动Nginx服务器,这样可以通过提供的rtmp地址进行推流。 5. 建立推流连接:在推流端使用支持RTMP协议的软件工具,如OBS Studio等,配置正确的推流地址,并开始推流。 此时,FFmpeg会将推流音视频数据传输给Nginx服务器上的RTMP模块进行处理和转发。 总结来说,通过FFmpegNginx的配合,我们可以实现音视频推流功能。FFmpeg负责编码推流的数据,而Nginx负责接收和转发数据。这种方式结合了FFmpeg灵活的音视频处理能力和Nginx优越的网络传输性能,使得推流过程更加稳定和高效。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值