热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windows下ffmpeg结合Nginx搭建RTMP,直播中的推流和拉流

windows下ffmpeg结合Nginx搭建RTMP,直播中的推流和拉流推流和拉流的概念以及RTMP协议在直播中,一般需要三个角色:

windows下ffmpeg结合Nginx搭建RTMP,直播中的推流和拉流


推流和拉流的概念 以及RTMP协议

在直播中,一般需要三个角色:主播,服务器,用户。主播通过推流将数据推到服务器上,而用户可以通过拉流的方式将视频流拉去下来,这个过程如下所示:

而推流和拉流的过程中需要将视频转为视频流,并且进行同步控制,这里就需要使用RTMP协议。RTMP 协议 Real Time Message Protocol(实时信息传输协议)的首字母缩写,是由 Adobe 公司开发的一种用于解决多媒体数据传输流多路复用和分包的网络协议。

我们做应用的话,可以使用Nginx-Rtmp,这个就相当于图片中间的部分。


结合Nginx-Rtmp的直播

像上面说的,如果进行直播,我们需要三个方面:主播,服务器,用户。就像斗鱼有直播伴侣,斗鱼的服务器,以及提供一个web界面共用户访问。这里主播我们采用ffmpeg进行视频推流,而服务器则使用Nginx-Rtmp进行视频流处理,并提供一个用户拉流的接口。


软件安装

ffmpeg这里不详细讲了,Nginx-rtmp可以把 https://github.com/illuspas/nginx-rtmp-win32 这个项目clone下来,直接运行nginx.exe 即可。


ffmpeg推流

我们运行nginx.exe 之后,其实是启动了一个服务(类似于tomcat一样),所以你可以在 http://localhost:8080/ 下访问。注意要开启flash插件。

2020-02-11_195934.jpg

在这个服务运行之后,我们就可以利用ffmpeg向上面推流了,其实有很多专业的软件可以推流的,比如OBS等。不过这里为了编程需要,就使用了ffmpeg。在命令行输入

ffmpeg -re -i a.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/live/room

我们就可以将a.mp4推送到nginx上面了,这个命令里面rtmp://localhost:1935/live/room 就是nginx服务的地址,其中rtmp://localhost:1935/live/ 中端口什么的都可以设置,具体参考nginx-Rtmp的相关文档,而room可以随便设,主播推流到什么位置,则客户需要从哪个位置拉流即可。

如果推送成功的话,这个窗口会一直在不停的更新frame,代表持续推送帧到服务器。

2020-02-11_200732.jpg

当我们推流结束,我们就可以拉流了,可以通过KMPlayer或者VLC这类支持流播放的播放器播放。输入推流的那个地址rtmp://localhost:1935/live/room,即可播放。

如果你需要嵌入到网页里面,提供一个web界面,则可以使用video.js进行播放,代码如下:




To view this video please enable Javascript, and consider upgrading to a web browser that supports HTML5 video


vjs.zencdn.net/5.5.3/video.js">



推荐阅读
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • 在使用USB接口的二维条码扫描器时,发现其无法正确识别条码中的中文字符。然而,采用串口连接的方式则能够成功识别。目前面临的问题是如何将通过串口获取的数据在网页中进行实时展示,希望各位专家能提供解决方案,不胜感激。 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 题目 E. DeadLee:思维导图与拓扑结构的深度解析问题描述:给定 n 种食物,每种食物的数量由 wi 表示。同时,有 m 位朋友,每位朋友喜欢两种特定的食物 x 和 y。目标是通过合理分配食物,使尽可能多的朋友感到满意。本文将通过思维导图和拓扑排序的方法,对这一问题进行深入分析和求解。 ... [详细]
  • 深入解析Linux内核中的进程上下文切换机制
    在现代操作系统中,进程作为核心概念之一,负责管理和分配系统资源,如CPU和内存。深入了解Linux内核中的进程上下文切换机制,需要首先明确进程与程序的区别。进程是一个动态的执行流,而程序则是静态的数据和指令集合。进程上下文切换涉及保存当前进程的状态信息,并加载下一个进程的状态,以实现多任务处理。这一过程不仅影响系统的性能,还关系到资源的有效利用。通过分析Linux内核中的具体实现,可以更好地理解其背后的原理和技术细节。 ... [详细]
  • 题目要求解决一个有趣的编程挑战,即计算由四个自然数 \( p, q, r, s \) 组成的分数序列的和。具体来说,需要编写一个 C# 程序来处理这些自然数,并通过特定的数学运算得出最终结果。该任务不仅考验编程技能,还涉及对数学公式的理解和应用。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 你可能体验过AR红包,但未必了解AR图书的奇妙世界
    AR出版是指将增强现实(AR)技术应用于图书制作,为读者提供更加生动、互动的阅读体验。例如,接力出版社推出的《香蕉火箭科学图画书》、山东教育出版社的《恐龙大世界》以及北京时代华文书局与摩艾客合作开发的AR英语学习书籍,都通过AR技术将平面内容转化为立体、动态的视觉效果,让知识变得更加直观和有趣。 ... [详细]
  • 本文详细介绍了如何利用CSS技术对链接下划线进行个性化定制和美化,涵盖了多种实用技巧和方法。通过对CSS属性的灵活运用,可以实现不同风格的下划线效果,提升网页的视觉体验。文中不仅提供了基础的代码示例,还结合实际案例进行了深入解析,帮助读者更好地理解和应用这些技巧。此外,文章还引用了《CSS2.0中文手册》中的相关内容,增加了技术的权威性和实用性。 ... [详细]
author-avatar
龙晓桥的微博_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有