快捷搜索:  汽车  科技

nginx的七层负载均衡配置(使用nginx-rtmp搭建最简单的直播系统)

nginx的七层负载均衡配置(使用nginx-rtmp搭建最简单的直播系统)/home/djstava/nginx-1.11.3/build/sbin/nginxffmpeg推送rtmp找一个本地的视频文件,使用 ffmpeg 进行推送,命令为rtmp { server { listen 1935; ping 30s; notify_method get; application myapp { live on; # sample play/publish handlers #on_play http://localhost:8080/on_play; #on_publish http://localhost:8080/on_publish; # sample reco

软硬件环境
  • ubuntu 16.04
  • Android Studio 2.1.3
  • OTT BOx with android 5.1.1
  • nginx 1.11.3
  • nginx-rtmp-module
  • vitamio
前言

当下 直播已经成为网络热词 它不单单是指传统广播电视的实时播放 更是更为广泛的音视频实时分享的延伸。早先 直播数据源只可能来自于电视台及节目制作中心 但是放眼现在 基于计算机技术的高速发展 任何人都可以独自完成内容的制作 再利用身边的终端设备完成分享 你不仅仅是受众 同样可以成为主角。可以说 时下流行的"网红"文化 直播技术立下了汗马功劳。本文旨在搭建一个最简单的视频直播系统 包括服务器端及 android 客户端 采用了 nginx、 nginx-RTMP、 vitamio 及 ffmpeg。

C 音视频开发学习资料:点击领取→音视频开发(资料文档 视频教程 面试题)(FFmpeg WebRTC RTMP RTSP HLS RTP)

rtmp协议

RTMP 是 Real Time Messaging Protocol 的缩写 是被设计用来进行实时数据通信的网络协议。它是一个协议族 包括 rtmpe、 rtmpt、 rtmps 等 是直播技术中常用的网络协议

服务端配置nginx添加rtmp支持

从 http://nginx.org/en/download.html 下载版本1.11.3 然后从 https://github.com/arut/nginx-rtmp-module 下载 nginx 的 rtmp 补丁,下载的文件都放在目录 /home/djstava (请根据实际情况自行修改)下,然后开始源码编译 nginx

tar xvf nginx-1.11.3.tar.gz cd nginx-1.11.3 mkdir build ./configure --prefix=/home/djstava/nginx-1.11.3/build --add-module=/home/djstava/nginx-rtmp-module make -f objs/Makefile make install

如果出现 fallthrough 的错误

nginx的七层负载均衡配置(使用nginx-rtmp搭建最简单的直播系统)(1)

需要修改 objs/Makefile,在 CFLAGS 中添加

-Wno-implicit-fallthrough修改配置文件nginx.conf

编辑 /home/djstava/nginx-1.11.3/build/conf/nginx.conf,在文件末尾添加如下内容

rtmp { server { listen 1935; ping 30s; notify_method get; application myapp { live on; # sample play/publish handlers #on_play http://localhost:8080/on_play; #on_publish http://localhost:8080/on_publish; # sample recorder #recorder rec1 { # record all; # record_interval 30s; # record_path /tmp; # record_unique on; #} # sample HLS #hls on; #hls_path /tmp/hls; #hls_sync 100ms; } # Video on demand #application vod { # play /var/Videos; #} # Video on demand over HTTP #application vod_http { # play http://localhost:8080/vod/; #} } }启动nginx服务

执行命令

/home/djstava/nginx-1.11.3/build/sbin/nginxffmpeg推送rtmp

找一个本地的视频文件,使用 ffmpeg 进行推送,命令为

ffmpeg -re -i 大话西游之月光宝盒.BD1280超清国粤双语中英双字.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/myapp/mystream

如果服务器不在本地的话,将 localhost 替换成对应的 IP 地址

C 音视频开发学习资料:点击领取→音视频开发(资料文档 视频教程 面试题)(FFmpeg WebRTC RTMP RTSP HLS RTP)

ffplay播放测试

服务启动好后,就可以进行测试了。如果没有安装 ffplay 的话,也可以用 vlc

ffplay rtmp://localhost/myapp/mystream后记

前面的步骤都是在本机中进行的。可是在实际应用中,情况会复杂的多,nginx 可能是一台服务器,ffmpeg 推流的可能就是另一台服务器,这样的话,可将 localhost 换成对应的 IP 地址。如果数据源来自摄像头,同样可以通过 ffmpeg 进行推送,命令如下

ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://10.10.10.84/myapp/mystream1

nginx的七层负载均衡配置(使用nginx-rtmp搭建最简单的直播系统)(2)

Android客户端播放

之前已经写过一个基于 vitamio 的视频播放器,地址是 github.com/xugaoxiang/…,我们就在它的基础上进行修改 找到 MainActivity.java

private String[] files = {"rtmp demo" "apple demo"};

在 listview 的 item 被点击后发送包含播放地址的 Intent

Intent intent = new Intent(MainActivity.this VitamioVideoViewActivity.class); intent.putExtra("movieUrl" "rtmp://10.10.10.84/myapp/mystream"); startActivity(intent);

猜您喜欢: