热门标签 | 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">



推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 提升Tumblr爬虫效率与功能
    本文介绍了对之前开发的Tumblr爬虫脚本进行升级,整合了两个脚本的功能,实现了自动分页爬取博客内容,并支持配置文件以下载多个博客的不同格式文件。此外,还优化了图片下载逻辑。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文探讨了在UC浏览器中调用分享面板后,图片无法正常显示的问题,并提供了详细的解决方法和代码示例。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 掌握 Photoshop 是学习网页设计的重要一步。本文将详细介绍 Photoshop 的基础与进阶功能,帮助您更好地进行图像处理和网页设计。推荐使用最新版本的 Photoshop,以体验更强大的功能和更高的效率。 ... [详细]
  • 本文详细探讨了网站流量统计中常用的三个关键指标:页面浏览量(PV)、独立访客数(UV)和独立IP数(IP)。通过分析这些指标的定义、计算方法及其应用场景,帮助网站运营者更好地理解用户行为,优化网站内容与用户体验。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
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社区 版权所有