通过Nginx实现直播软件源码的推流和拉流
推流和拉流是直播软件源码实现直播的重要步骤,今天我们分析一下如何通过Nginx实现直播软件源码的推拉流。
理论介绍
1、RMTP, Real Time Messaging Protocol 实时消息传输协议。
该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。
复制代码
2、FFmpeg, 直播软件源码视频处理最常用的开源软件。
实现步骤
1、安装配置 FFmpeg
Mac 下装的比较简单,直接 homebrew 装即可:
brew install ffmpeg
2、安装 nginx
安装 rtmp module 采用 stack overflow 该方式可以成功安装
// 因为我之前有通过 homebrew 装过nginx,所以需要先 unlink
brew unlink nginx
// 了解了一下,类似npm 切换 registry
brew tap denji/nginx
// 执行安装
brew install nginx-full --with-rtmp-module
Nginx常用命令
- nginx -s reload 重新加载配置文件
- nginx -s reopen 再次打开日志文件
- nginx -s stop 停止服务器
- nginx -s quit 退出服务器
- nginx 启动Nginx
Nginx目录
- 安装位置 /usr/local/opt/nginx-full/bin/nginx
- 配置文件所在目录 /usr/local/etc/nginx/nginx.conf
- 服务器根目录 /usr/local/var/www
直播软件源码安装好 nginx 后,进行 rtmp 配置:
完整的配置文件可以从这里查看,可以备份下你当前的nginx.conf,然后用我提供的 nginx.conf 进行替换,然后执行 nginx -s reload,重新加载即可。
rtmp {server {listen 1935;chunk_size 4096;application video {play /usr/local/var/www/video;}application live {live on;record off;hls on;# 这个路径是会有内容写到其中的hls_path /usr/local/var/www/live/hls/;hls_fragment 5s;}}
}
注意,其中的 /usr/local/var/www/video 目录如果不存在,可以手动创建一下。
直播软件源码播放相关的配置
location /hls {types {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}# 注意,这里的路径需要和下面 rtmp 配置的路径一致,否则会报404alias /usr/local/var/www/live/hls/;expires -1;add_header Cache-Control no-cache;}location /stat {rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {# 这里的目录一定要准确,否则会报404root /usr/local/Cellar/rtmp-nginx-module/1.1.7.11-dev_3/share/rtmp-nginx-module/;}
3、FFmpeg 推流,拉流
直播软件源码推流脚本
ffmpeg -re -i video.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/live/llccing
注意,执行上面命令的时候,有个video.mp4文件,所以需要在视频文件所在的目录运行该命令,或者指定绝对路径。视频资源在参考中已经提供,可以去下载。
直播软件源码拉流脚本
ffplay rtmp://localhost:1935/live/llccing
先推流,再拉流,即可实现视频播放。
4、OBS 推流, VLC 拉流
OBS推流设置,如下图:
VLC 拉流设置,如下图
如此就实现了通过 OBS 推流直播,通过 VLC 拉流观看直播。
5、成功展示
展示效果图如下
这样,我们就实现了直播软件源码的推拉流。
声明:本文由云豹科技转发自程序猿小新博客,如有侵权请联系作者删除
通过Nginx实现直播软件源码的推流和拉流相关推荐
- 直播平台源码中的推拉流是什么
关于直播平台源码中的推流和拉流,最常用的就是RTMP和RTSP协议了 推流,指的是把采集阶段封包好的内容传输到服务器的过程,推流是直播端需要完成的步骤.拉流是指服务器已有直播内容,用指定地址进行拉取的 ...
- 直播软件源码,实现一个简单的直播功能
概述 一直好奇直播软件源码这个东东是如何实现的,譬如音视频流是如何采集的? 音视频流是如何推送到订阅方 ? 如何支撑上万级.百万级用户同时观看直播 ? 功能设计 如上图所示为直播软件源码 Demo 实 ...
- 直播软件源码如何在Android端实现多人视频通话
本篇主要讨论直播软件源码如何在Android端实现多人视频通话.主要需要实现以下功能: 随着加入人数和他们的手机摄像头分辨率的变化,显示不同的UI,即所谓的"分屏" 点击分屏中的小 ...
- 今天获取的云蹦迪直播软件源码全开源
意:第2,3步只在第一次运行时需要配置 一定要按照顺序执行,执行顺序有错会报错 开播 在抖音找到自己的直播间,复制直播间号(绿色区域是直播间号)(只在第一次运行时需要) 在解压后的debug文件夹的s ...
- 实现简单的直播互动功能,直播软件源码是如何做的
近两年,很多电商平台开始关注起直播互动电商,希望在直播中,也可以增加互动,例如在直播过程中,抛出限量优惠商品,实时发送抢购的消息给观众.于是我们做了一个简单的直播软件源码Demo. Demo大致的整体 ...
- 一对一直播软件源码开发,iOS视频采集的实现过程
在一对一直播软件源码日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的技术和原理进行梳理和总结. 认识 AVC ...
- 直播软件源码如何实现直播flash插件
直播软件源码如何实现直播flash插件 项目搭建 原有的项目是用的layui+jq搭建.现在将大屏部分独立出来: 开心到飞起,哈哈哈 现在大屏单独出来做,我采用了react + react-mobx; ...
- 直播软件源码开发,直播间内消息系统的实现
在直播软件源码开发过程中,消息系统是非常关键的,无论是直播间内的消息还是平台内的消息,都关系着用户的使用体验,所以今天我们先用一个简单的"拉"模型搭建一个简单的直播间消息系统. 基 ...
- 直播软件源码开发,实现小程序直播的功能
为了方便用户观看,有些直播软件源码支持小程序端观看,那么小程序的直播软件源码功能如何实现呢,就让我们一起看一下吧. 1.添加直播组件 以mpvue为例 //app.json "plugins ...
最新文章
- 图像处理中的跨度(stride)
- python九:元祖(tuple)
- 校内集训(20170903)
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和
- sql内部连接_SQL内部联接的分步演练
- java搜寻范围在哪设定_查找值在Java中的范围
- python 获得时间戳_Python 获取时间戳
- 用计算机如何扫描文件,打印机扫描文件到电脑方法教程
- UE4搭建场景与特效文档—地形、水体、植被、雨雾效果
- 机械键盘黑轴红轴青轴茶轴区别 机械键盘黑轴红轴青轴茶轴哪个好
- 云中和花木_王者荣耀:体验服英雄重大调整,云中君成野王,妲己射程加强,花木兰重回巅峰...
- Xcode 物理文件夹与工程文件夹
- 制造业数字化转型关键问题有哪些?
- 第三方API接口对接-电子合同的实现逻辑
- 经典文献阅读之--Globally Consistent and Tightly Coupled 3D LiDAR Inertial Mapping(紧耦合3D激光雷达)
- VR家居为什么盛行?可以解决哪些传统家居的痛点?
- isnan java_从 Number.isNaN 与 isNaN 的区别说起 例子
- 【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report
- 基于RFID定位技术的智能仓储管理--新导智能
- dma-buf 由浅入深(八) —— ION 简化版
热门文章
- UNet详解(附图文和代码实现)
- Aleph Farms聘请监管事务主管,提前为全球商业化做好准备
- ingress?另一种
- 下一代VC运行时库——Universal CRT
- 正则表达式-RegexBuddy工具
- JAVA面试题之JVM基础知识
- 【CVPR 2021】剪枝篇(二):Convolutional Neural Network Pruning with Structural Redundancy Reduction
- 17.第二十三章.测试管理
- 为什么uzi排到古手羽就秒_为什么uzi排到古手羽就秒退看一下直播间里的弹幕就清楚了!...
- Java函数式编程神器 VAVR(vavr - turns java™ upside down)