ubuntu中使用ffmpeg和nginx推流rtmp视频

最近在测试ffmpeg推流rtmp视频,单独安装ffmpeg是无法完成推流的,需要一个流媒体服务器,常用nginx,可以直接在ubuntu虚拟机里面测试一下。

测试过程不涉及编译ffmpeg和nginx,仅使用基本功能:

1 安装ffmpeg

sudo apt install ffmpeg

2 安装nginx

sudo apt install nginx

3 安装nginx的rtmp模块

sudo apt-get install libnginx-mod-rtmpsudo service nginx restart

4 配置nginx:

vim /etc/nginx/nginx.conf

 增加如下内容:

rtmp {server {listen 1935;chunk_size 4096;application live {live on;record off;}}
}

这个内容的意思是监听1935端口,rtmp的app名字为live,本地的一个流媒体服务器就搭好了。

5 经过上面的步骤各项准备工作都做好了,现在我想推流ubuntu本地的一个MP4文件到刚才的流媒体服务器(其实理论上只要是能访问上面的流媒体服务器的设备都可以推流到服务器,不一定是本地,我也可以在win10上面推进去ubuntu,再从win10拉出来),且一直循环推送,键入如下命令:

ffmpeg -stream_loop -1 -re -i /mnt/hgfs/vmware_ubuntu_share/input.mp4 -c copy -f flv -flvflags no_duration_filesize  rtmp:192.168.63.128:1935/live/1

这个命令的意思是:

-stream_loop -1 循环推送

-re 使用视频原来的帧率

-i /mnt/hgfs/vmware_ubuntu_share/input.mp4 要推送的mp4文件路径

-flvflags no_duration_filesize 禁止no_duration_filesize错误

192.168.63.128 ip地址改为自己的ubuntu地址,即流媒体服务器地址

推送成功如图。

6 在win10桌面打开ffplay从流媒体服务器拉流看看

ffplay rtmp:192.168.63.128:1935/live/1

 

拉流也是成功的。 

7 推送摄像头的画面到rtmp

命令:

ffmpeg -re -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast  -tune zerolatency -acodec aac -f flv rtmp://192.168.63.128:1935/live/1

总体命令跟前面推送本地mp4差不多,只不过这次制定了输入为/dev/video0和输入的格式。

同样从ffplay拉流:

ffplay rtmp://192.168.63.128:1935/live/1

简单调试了一下画面,摄像头分辨率太高,导致码率很大,而且帧率很低:

ffmpeg -re -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast  -tune zerolatency -acodec aac -crf 40  -vf "scale=1280:720,fps=fps=60"  -f flv rtmp://192.168.63.128:1935/live/1

-crf 40 可以显著降低画面质量,降低码率

-vf "scale=1280:720,fps=fps=60" 降低分辨率到720p,提高帧率到60

最后码率可以降低到200kbps左右,效果还可以,当然画面比较糊。

 

引用:

ubuntu20.04搭建Nginx+rtmp服务器 - 晚安z - 博客园 (cnblogs.com)

unknown directive "rtmp" in /etc/nginx/nginx.conf:76 - Stack Overflow

使用ffmpeg循环推流(循环读取视频文件)推送RTMP服务器的方法_windows ffmpeg循环推流-CSDN博客

ffmpeg推流报错Failed to update header with correct duration.-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478548.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KMeans聚类实验(基础入门)

KMeans实验通常涉及使用KMeans聚类算法对数据集进行聚类分析。以下是一个关于KMeans实验的详细指导: 一、实验目的 加深对非监督学习的理解和认识。掌握动态聚类方法KMeans算法的设计方法。 二、实验环境 具有相关编程软件的PC机,通常使用Python、R等…

函数类型注释和Union联合类型注释

函数类型注释格式(调用时提示输入参数的类型): )def 函数名(形参名:类型,形参名:类型)->函数返回值类型: 函数体 Union联合类型注释(可注释多种类型混合的变量)格式: #先导入模块 from typing import…

重新定义社媒引流:AI社媒引流王如何为品牌赋能?

在社交媒体高度竞争的时代,引流已经不再是单纯追求流量的数字游戏,而是要找到“对的用户”,并与他们建立真实的连接。AI社媒引流王通过技术创新和智能策略,重新定义了社媒引流的方式,帮助品牌在精准触达和高效互动中脱…

基于Boost库的搜索引擎

本专栏内容为:项目专栏 💓博主csdn个人主页:小小unicorn ⏩专栏分类:基于Boots的搜索引擎 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识…

了解M有SQL索引

目录 索引介绍 索引的优缺点 索引底层数据结构选型 Hash表 二叉查找树(BST) AVL树 红黑树 B 树& B树 索引类型总结 主键索引(Primary Key) 二级索引 聚簇索引与非聚簇索引 聚簇索引(聚集索引) 聚簇索引介绍 聚簇索引的优缺点 非聚簇索引(非聚集索引) 非聚簇…

【C++】深入哈希表核心:从改造到封装,解锁 unordered_set 与 unordered_map 的终极奥义!

文章目录 修改哈希表模板参数迭代器HashTable 的默认成员函数HashTable 迭代器相关函数HashTable 的 Insert 函数HashTable 的 Find函数HashTable 的 Erase函数 封装 unordered_set封装 unordered_map测试 unordered_set 和 unordered_map 修改哈希表 我们基于链地址法实现的哈…

TEA加密逆向

IDA伪代码 do{if ( v15 )v17 v38; // x120x0->0x79168ba790, 输入字符串经过check1处理后字符串elsev17 v40;v18 (unsigned int *)&v17[v16]; // 0x78cbbd47fc add x12, x12, x8 ; x120x79168ba790->…

android 性能分析工具(03)Android Studio Profiler及常见性能图表解读

说明:主要解读Android Studio Profiler 和 常见性能图表。 Android Studio的Profiler工具是一套功能强大的性能分析工具集,它可以帮助开发者实时监控和分析应用的性能,包括CPU使用率、内存使用、网络活动和能耗等多个方面。以下是对Android …

【FPGA】Verilog:利用 4 个串行输入- 串行输出的 D 触发器实现 Shift_register

0x00 什么是寄存器 寄存器(Register)是顺序逻辑电路中使用的基本组成部分之一。寄存器用于在数字系统中存储和处理数据。寄存器通常由位(bit)构成,每个位可以存储一个0或1的值。通过寄存器,可以设计出计数器、加法器等各种数据处理电路。 0x01 寄存器的种类 基于 D 触发…

用 Python 从零开始创建神经网络(十):优化器(Optimizers)(持续更新中...)

优化器(Optimizers) 引言1. 随机梯度下降/Stochastic Gradient Descent (SGD)2. 学习率(Learning Rate)3. 学习率衰减(Learning Rate Decay)4. 带动量的随机梯度下降法(Stochastic Gradient Des…

鱼眼相机模型-MEI

参考文献: Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下: // 相机坐标系下的点投影到畸变图像// 输入:相机坐标系点坐标cam 输出: 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…

Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理

1. 概述 本文介绍了在spring boot框架下,使用validation数据校验注解,针对不同请求链接的前端传参数据,进行分层视图对象的校验,并通过配置全局异常处理器捕获传参校验失败异常,自动返回校验出错的异常数据。 2. 依赖…

20241125复盘日记

昨日最票: 南京化纤 滨海能源 广博股份 日播时尚 众源新材 返利科技 六国化工 丰华股份 威领股份 凯撒旅业 华扬联众 泰坦股份 高乐股份高均线选股: 理邦仪器高乐股份日播时尚领湃科技威领股份资金最多的票: 资金攻击最多的票: …

STM32WB55RG开发(5)----监测STM32WB连接状态

STM32WB55RG开发----5.生成 BLE 程序连接手机APP 概述硬件准备视频教学样品申请源码下载参考程序选择芯片型号配置时钟源配置时钟树RTC时钟配置RF wakeup时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙LED配置设置工程信息工程文件设置参考文档SVCCTL_A…

游戏引擎学习第23天

实时代码编辑功能的回顾 当前实现的实时代码编辑功能已经取得了显著的成功,表现出强大的性能和即时反馈能力。该功能允许开发者在修改代码后几乎立即看到变化在运行中的程序中体现出来,极大提升了开发效率。尽管目前的演示内容较为简单,呈现…

ARM CCA机密计算安全模型之概述

安全之安全(security)博客目录导读 目录 1、CCA的要素 2、CCA平台 2.1 CCA 系统安全域 2.2 监控安全域 2.3 领域管理安全域 3、与系统平台安全服务的关系 3.1 安全配置 3.2 平台认证 1、CCA的要素 高层次的 CCA 架构如下图中概述。 在硬件层面,CCA 系统安全域包括可…

2024 java大厂面试复习总结(一)(持续更新)

10年java程序员,2024年正好35岁,2024年11月公司裁员,记录自己找工作时候复习的一些要点。 java基础 hashCode()与equals()的相关规定 如果两个对象相等,则hashcode一定也是相同的两个对象相等,对两个对象分别调用eq…

【R语言管理】Pycharm配置R语言及使用Anaconda管理R语言虚拟环境

目录 使用Anaconda创建R语言虚拟环境1. 安装Anaconda2. 创建R语言虚拟环境 Pycharm配置R语言1. 安装Pycharm2. R Language for IntelliJ插件 参考 使用Anaconda创建R语言虚拟环境 1. 安装Anaconda Anaconda的安装可参见另一博客-【Python环境管理工具】Anaconda安装及使用教程…

系统设计时应时刻考虑设计模式基础原则

目录 :star2:单一职责原则 (Single Responsibility Principle, SRP):star2:开放-封闭原则 (Open-Closed Principle, OCP):star2:依赖倒转原则 (Dependency Inversion Principle, DIP):star2:里氏代换原则 (Liskov Substitution Principle, LSP):star2:迪米特原则 (Law of Demet…

Spring 中的 ProxyFactory 创建代理对象

一、jdk 动态代理 和 cglib动态代理 简单介绍 1.jdk动态代理 public interface AService {public String serviceA(String param);public String serviceAA(String param); } public interface BService {public String serviceB(String param);public String serviceBB(Str…