windows下ffmpeg结合Nginx搭建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插件。
在这个服务运行之后,我们就可以利用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,代表持续推送帧到服务器。
当我们推流结束,我们就可以拉流了,可以通过KMPlayer或者VLC这类支持流播放的播放器播放。输入推流的那个地址rtmp://localhost:1935/live/room
,即可播放。
如果你需要嵌入到网页里面,提供一个web界面,则可以使用video.js进行播放,代码如下:
<!DOCTYPE html>
<html lang="en">
<head><title>Video.js | HTML5 Video Player</title><!-- <link href="video-js-6.2.0/video-js.css" rel="stylesheet"><script src="video-js-6.2.0/videojs-ie8.min.js"></script> --><link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet"><script src="http://vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script></head>
<body><video id="example_video_1" class="video-js vjs-default-skin" controls preload="auto" width="1280" height="720" poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}"><!-- <source src="1.mp4" type="video/mp4"> --><source src="rtmp://localhost:1935/live/room" type="rtmp/flv"><p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p></video><script src="http://vjs.zencdn.net/5.5.3/video.js"></script>
</body></html>
vjs.zencdn.net/5.5.3/video.js">
windows下ffmpeg结合Nginx搭建RTMP,直播中的推流和拉流相关推荐
- 关于直播类app中的推流、拉流技术(转载)
关于直播类app中的推流.拉流技术 from:https://blog.csdn.net/lzllzllhl/article/details/80249069 图像处理:iOS端一般会用到GPUIma ...
- windows下ffmpeg+nginx-rtmp环境搭建及opencv+ffmpeg+python实现拉流和rtmp直播推流
由于工作需要最近在研究rtsp拉流与直播推流的问题,目前先在我本机上进行了实验,本博客记录学习的内容,包含windows下ffmpeg.nginx-rtmp环境搭建及opencv+ffmpeg+pyt ...
- 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) 一.方案简要 首先通过对开发方案的仔细研究(实时监控.流媒体.直播流方案的数据源-->协议转换-->服务器--&g ...
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...
- 关于直播类app中的推流、拉流技术
虽然直播app在2016年的时候就很火了,但是对于我这样的技术菜逼来说,从来没有真正的去了解过,而对于这方面的技术,我就更是不了解了.由于最近的项目中可能会用到直播之类的功能,所以就赶紧来恶补一下这方 ...
- Windows下用FFmpeg+nginx+rtmp搭建直播环境 实现推流、拉流(超简单教程)
https://blog.csdn.net/qq_32381727/article/details/81078213
- Android音视频学习系列(八) — 基于Nginx搭建(rtmp、http)直播服务器
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
- 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能
使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能 本文介绍了如何使用 Nginx 搭建 RTMP 流媒体服务器,并提供配置文件和前端示例,实现直播功能. 环境 操作系统: Ubuntu 18 ...
- php直播平台源码基于 Nginx 搭建(rtmp、http)直播服务器
php直播平台源码基于 Nginx 搭建(rtmp.http)直播服务器 直播协议介绍 国内常见公开的直播协议有几个:RTMP.HLS.HDL(HTTP-FLV).RTP,我们来逐一介绍. RTMP ...
最新文章
- xml凭证模板的一般制作
- jq点击按钮打开和关闭弹出层,点击除了当前按钮以外的地方关闭弹出层
- Python模块: 命令行解析optionparser
- python个人微信支付接口_Python实现微信小程序支付功能
- ARP欺骗报文是这个样子的
- json-C使用小结
- matlab如何绘制像素格子的图_如何根据测量数据绘制填挖方数据图
- 使用导入 Excel 的方式批量修改文件夹名称
- 微信小程序 内容评论-回复评论-回复回复的实现
- LNK2019 无法解析的外部符号 __imp__PyRun_SimpleStringFlags
- panabit策略路由
- 135端口入侵教程(仅学习用)
- 停止精神内耗 每日分享
- pwr | 谁说样本量计算是个老大难问题!?(二)(独立样本均值篇)
- mycat连接数据库8.0以上 处理程序连接query_cache_size报错信息 mycat升级数据库踩坑
- 记——博客后台管理系统
- L1正则化与L2正则化详解
- React有哪些性能优化的手段?
- Databricks 加载MySQL数据
- 论文阅读——(邬江兴院士) 网络空间内生安全综述 Cyberspace Endogenous Safety and Security