因工作需要,及考虑成本因素,需要探索一套免费的移动端基于rtmp推流的直播解决方案,过程虽稍显曲折,但最终还是完成了目标。在这里将记录下来,以便日后查阅。

总体思路

移动端推流(RTMP) ---> 流媒体服务器 ---> web服务器 ---> 网页播放

移动端推流工具使用 Larixbroadcaster ,支持安卓和苹果,并且有提供SDK,方便集成与二次开发,app商店有载,https://softvelum.com/larix

流媒体服务器的搭建使用 nginx+rtmp 方案, nginx-rtmp模块github坐标,https://github.com/arut/nginx-rtmp-module

web容器直接使用 nginxhttp://nginx.org/en/download.html

网页播放,采用 ckplayer 作为web播放器,http://www.ckplayer.com

1. Larixbroadcaster的安装过程省略了
2. 流媒体服务器的搭建,nginx+rtmp
  • 1,使用docker容器,公共仓库有大神制作好的镜像,适合测试使用,便捷快速。

Centos7环境下的安装启动脚本

#!/bin/sh
# Author: Alusss
### ##docker-compose版本,https://github.com/docker/compose/releases/查阅可用版本
dcv=1.25.1 ###安装docker
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.nginx.bak -f
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak -f
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.bak -f
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
rm -rf /var/lib/docker
curl -sSL https://get.daocloud.io/docker | sh
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io ##安装docker-compose(选装)
yum -y remove docker-compose
rm -rf /usr/local/bin/docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/$dcv/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose ##检查版本
docker -v
docker-compose -v
  • 2,linux环境,下载nginx源码和nginx-rtmp-module,自行编译安装。

编译安装脚本

#!/bin/sh
# Author: Alusss
### mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.nginx-rtmp -f
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.rtmp -f
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.rtmp -f
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum install -yq tar wget gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl openssl-devel #设置nginx版本,rtmp版本
nginx_ver="1.16.1"
rtmp_ver="1.2.1"
dir="/usr/local/nginx"
temp="/root/nginx-rtmp"
user="root"
group="root"
args="--user=$user --group=$group --prefix=$dir --conf-path=$dir/conf/nginx.conf --pid-path=$dir/conf/nginx.pid --lock-path=$dir/lock/nginx.lock --error-log-path=$dir/log/error.log --http-log-path=$dir/log/access.log --with-http_gzip_static_module --http-client-body-temp-path=$dir/temp/client --http-proxy-temp-path=$dir/temp/proxy --http-fastcgi-temp-path=$dir/temp/fastcgi --http-uwsgi-temp-path=$dir/temp/uwsgi --http-scgi-temp-path=$dir/temp/scgi --with-http_stub_status_module --with-http_ssl_module" mkdir $temp
cd $temp
curl -o "nginx-$nginx_ver.tar.gz" http://nginx.org/download/"nginx-$nginx_ver.tar.gz"
tar -xzf "nginx-$nginx_ver.tar.gz"
rm -f "nginx-$nginx_ver.tar.gz"
curl -o "nginx-rtmp-module-$rtmp_ver.tar.gz" https://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v"$rtmp_ver"
tar xzf "nginx-rtmp-module-$rtmp_ver.tar.gz"
rm -f "nginx-rtmp-module-$rtmp_ver.tar.gz" useradd -s /sbin/nologin $user -M
cd nginx-$nginx_ver
./configure $args --add-module="$temp/nginx-rtmp-module-$rtmp_ver"
make -j8
make install
rtmp {
server {
listen 1935;
access_log logs/rtmp.access.log;
application live {
live on;
hls on;
hls_path html/hls;
hls_fragment 5s;
publish_notify on;
}
application hls {
live on;
hls on;
hls_path temp/hls;
hls_fragment 5s;
}
record all;
record_unique on;
record_path /data/rtmp/record;
record_suffix -%Y-%m-%d-%H_%M_%S.flv;
}
}

推流地址: rtmp://ip:1935/live/a

nginx下html/hls下会生成a.m3u8文件。

通过ckplayer插件,(ckplay已经放在上面nginx里面)在http://ip/index.html页面播放。

基于rtmp的移动端推流解决方案的更多相关文章

  1. 基于rem的移动端自适应解决方案

    代码有更新,最好直接查看github: https://github.com/finance-sh/adaptive adaptivejs原理: 利用rem布局,根据公式 html元素字体大小 = d ...

  2. 基于rtmp+nginx 、vlc实现FFmpeg推流与wpf端拉流

    这周在研究基于rtmp+nginx直播流的实现,现总结如下: 0.所需文件: 链接:https://pan.baidu.com/s/1U5gsNI8Rcl684l5gVL6swg 提取码:dli9 1 ...

  3. c# 基于RTMP推流 PC+移动端 拉流播放

    网上关于直播相关的文章很多,但是讲解还是不够系统,对于刚刚接触直播开发的朋友实施起来会浪费不少时间.下面结合我自己的经验, 介绍一下直播方面的实战经验. 分成两个部分 第一部分是标题中介绍的基于RTM ...

  4. 最简单的基于FFmpeg的移动端例子:IOS 推流器

    转至:http://blog.csdn.net/leixiaohua1020/article/details/47072519   ================================== ...

  5. 最简单的基于FFmpeg的移动端样例:IOS 推流器

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  6. day122:MoFang:OSSRS流媒体直播服务器&基于APICloud的acLive直播推流模块实现RTMP直播推流

    目录 1.docker安装OSSRS流媒体直播服务器 2.基于APICloud的acLive直播推流模块实现RTMP直播推流 3.直播流管理 1.docker安装OSSRS流媒体直播服务器 1.OSS ...

  7. iOS:基于RTMP的视频推流

    iOS基于RTMP的视频推流 一.基本介绍 iOS直播一出世,立马火热的不行,各种直播平台如雨后春笋,正因为如此,也同样带动了直播的技术快速发展,在IT界精通直播技术的猴子可是很值钱的.直播技术涉及的 ...

  8. 视频直播技术之iOS端推流

    随着网络基础建设的发展和资费的下降,在这个内容消费升级的时代,文字.图片无法满足人们对视觉的需求,因此视频直播应运而生.承载了实时性Real-Time和交互性的直播云服务是直播覆盖各行各业的新动力.网 ...

  9. 最简单的基于FFmpeg的移动端例子:IOS 视频解码器-保存

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

随机推荐

  1. zuul网关配置

    静态路由:通过url匹配映射地址进行静态路由(只会把到达zuul网关的请求按照发送,并把匹配请求地址 /common-service/ ->http://localhost:9001/) zuu ...

  2. pyCharm中设置查看运行过程中的变量实时情况

    1.点击运行栏的这个灰色向下剪头: 2.单击“Edit Configurations”, 3.在出现的窗口上,勾选上:“Show command line afterwards” 或 “run wit ...

  3. 基于Docker本地运行Kubernetes

    基于Docker本地运行Kubernetes 概览 下面的指引将高速你如何通过Docker创建一个单机.单节点的Kubernetes集群. 下图是最终的结果: 先决条件 \1. 你必须拥有一台安装有D ...

  4. 四、python杂项

    一.pycharm单行和多行注释快捷键                        多行注释就一个组合键:选中+Ctrl+/

  5. mysql 5.6 cmake的安装

    # cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDI ...

  6. 在WSL Ubuntu1804中安装Docker

    一.系统环境 1.1 环境准备: Windows10 企业版 1909 Docker for Windows WSL Ubuntu1804 1.2 下载安装 Docker for Windows 1. ...

  7. Redis_大保健

    Redis redis命令参考网址: http://doc.redisfans.com/ redis主从: 集群:一组通过网络连接的计算机,共同对外提供服务,像一个独立的服务器. 一.简介 nosql ...

  8. 配置window下python3环境

    功能介绍 整理生信小知识库,一些技巧一些知识. 昨天 以下配置环境基于window操作系统,安装python3版本为例,推荐基础版配置. !   METHOD 1 (基础版) 官网下载对应电脑版本的p ...

  9. pandas(二)

    1.Series序列 一维的数组数据,构建是传二维数据会报错,数据具有索引,构建时如果不传索引,默认为数字rang索引. series存在列名和索引,sr.at[0]是通过列名来定位数据(iat定位行 ...

  10. Python KNN 学习曲线

    学习曲线的目的是选择更好的模型参数.以最近邻算法为例,选取最近的多少个数据点,才能达到最优.可以控制训练集不动,调整最近的点的个数,绘制学习曲线. import matplotlib.pyplot a ...