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

这篇具有很好参考价值的文章主要介绍了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即为安装成功

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

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 

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

2.6 修改Nginx的配置文件

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

阿里云安全组增加8080端口的配置:
Python 通过ffmpeg实现实时推流(ubuntu20.04+ffmpeg+nginx)

2.7 测试nginx服务

重启nginx:

 sudo systemctl restart nginx   

浏览器输入云服务器公网IP,出现下图所示欢迎语句表明配置成功:
Python 通过ffmpeg实现实时推流(ubuntu20.04+ffmpeg+nginx)

四. 参考文献

阿里云服务器搭建Nginx+rtmp推流服务器文章来源地址https://www.toymoban.com/news/detail-416979.html

到了这里,关于Python 通过ffmpeg实现实时推流(ubuntu20.04+ffmpeg+nginx)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows11通过虚拟机安装Ubuntu20.04

            VMware 分为 VMware Workstation Pro 和 VMware Workstation Player, Pro体验期后收费,Player则免费。player 早期不能创建虚拟机,只能Pro创建好后给Player运行,而现在player早已加入创建虚拟机功能,所以使用体验上两者相差不大,最重要的差异应该是Pro可以同时运行多个虚拟机,而

    2024年01月21日
    浏览(50)
  • Ubuntu20.04 通过netplan 配置静态ip

    ubuntu 从 17.10 开始,改成 netplan 方式配置,不在 /etc/network/interfaces 里固定 IP 的配置 ,配置写在 /etc/netplan/01-network-manager-all.yaml 或者类似名称的 yaml 文件里 可见,当前有两个网卡,其中eno1是使用的 如果是桌面版本的Ubuntu20.04 首次打开大概如下,按需要修改添加…… 去网络设

    2024年01月25日
    浏览(49)
  • ubuntu 20.04 通过 samba 共享文件夹到 windows

    ubuntu 与 windows 共享,有两条路,一是 windows 的目录共享给 ubuntu,比如使用 VM Ware 虚拟机,直接通过 VMWare 虚拟机共享文件夹的方式,windows 上的目录就共享给了 ubuntu ubuntu 如何把目录共享给 windows 呢? 文件目录共享,ubuntu 与 windows 谁共享,有区别吗? 文件或者目录的主要区

    2024年02月09日
    浏览(52)
  • 【Windows11通过移动硬盘安装Ubuntu20.04双系统】保姆级教程 | ventoy | BIOS | Ubuntu20.04 | 全过程图文by.Akaxi

    目录 一、查看Windows引导方式 二、制作安装盘 三、设置电脑配置 1.关闭bitlocker 2.压缩硬盘分区 3.关闭Secure Boot 4.关闭intel RST 5.BIOS设置U盘引导 四、安装Ubuntu20.04 1.ventoy引导 2.安装配置 3.安装类型 4.完成安装 更多细节 最终效果: 笔记本在Windows11系统下成功安装Ubuntu20.04,并且可

    2024年03月20日
    浏览(71)
  • [Ubuntu 20.04] 通过udev规则修改网卡名称(例如eth0)

    在 Ubuntu 20.04 操作系统中,默认情况下,网卡接口名称采用了一种较为复杂的命名方式(如 enp0s3、eth0 等)。然而,有时候我们可能更希望使用更简洁和易于识别的名称来标识不同的网络接口。那么如何在 Ubuntu 20.04 中修改网卡接口的名称,以满足个性化需求。 步骤一:查看

    2024年02月11日
    浏览(57)
  • 树莓派4B无屏幕安装Ubuntu20.04并通过ssh操作远程桌面

    因为手上没有合适的屏幕(其实是没有适配HDMI的屏幕,全是VGA接口) 所以用了些邪门(也不是啦)的方法去完成,整个过程只要读卡器和一根网线 在其中我遇到的困难包括但不限于:连不上wifi、树莓派烧录软件烧录的Ubuntu系统没有桌面、无屏幕和键盘、 这个过程踩了居多

    2024年02月03日
    浏览(54)
  • ubuntu20.04-通过docker安装jenkins并自动化发布java

    jenkins 需要 git 、 maven 和 node ,其中 maven 和 node 手动添加, git和git环境是jenkins镜像 自带了的。 如果删除了 docker 对应的 jenkins 容器后(删除前一定备份 jenkins_home 整个文件夹,否则怕前功尽弃 : tar -czvf jenkins_home.tar.gz /var/jenkins_home ) 如果删除了容器,需要重新安装并配置

    2024年03月11日
    浏览(58)
  • scrcpy实现手机屏幕与ubuntu共享、推流、实时分割(wifi环境下)

    有些时候我们需要将手机上的视频投到ubuntu上并进行处理,scrcpy就是一个非常低延时并且可以wifi共享的工具,本文主要针对其源码进行修改,实现ubuntu上实时分割手机画面,分为安装编译源(大坑)、修改源码、修改分割推理代码三部分。 scrcpy的使用和wifi连接可参考 Ubunt

    2024年02月12日
    浏览(37)
  • RTSP 和 RTMP通过ffmpeg实现将本地摄像头推流到RTSP服务器

    一、流媒体:RTSP 和RTMP 1、RTSP 和 RTMP的工作原理 1)RTSP工作原理 用户设备向视频流平台发送 RTSP 请求 视频流平台返回可以操作的请求列表,比如播放、暂停等 用户设备向视频流平台发送具体的请求,比如播放 视频流平台解析请求并调用指定机制启动视频流处理 由于 RTSP 依

    2024年02月05日
    浏览(50)
  • RTSP 和 RTMP原理 & 通过ffmpeg实现将本地摄像头推流到RTSP服务器

    0、参考资料 秒懂流媒体协议 RTMP 与 RTSP 什么是RTMP 和 RTSP?它们之间有什么区别? RTSP和RTMP的区别是什么? 1、RTSP 和 RTMP的工作原理 1)RTSP工作原理 用户设备向视频流平台发送 RTSP 请求 视频流平台返回可以操作的请求列表,比如 播放、暂停 等 用户设备向视频流平台发送具

    2024年02月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包