软硬件环境
- ubuntu 16.04
- Android Studio 2.1.3
- OTT BOx with android 5.1.1
- Nginx 1.11.3
- nginx-rtmp-module
- vitamio
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.gzcd nginx-1.11.3mkdir build./configure --prefix=/home/djstava/nginx-1.11.3/build --add-module=/home/djstava/nginx-rtmp-modulemake -f objs/Makefilemake install
如果出现 fallthrough 的错误文章插图
需要修改 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/nginx
ffmpeg推送rtmp找一个本地的视频文件,使用 ffmpeg 进行推送,命令为ffmpeg -re -i 大话西游之月光宝盒.BD1280超清国粤双语中英双字.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/myapp/mystream
如果服务器不在本地的话,将 localhost 替换成对应的 IP 地址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
Android客户端播放之前已经写过一个基于 vitamio 的视频播放器,地址是 github.com/xugaoxiang/…,我们就在它的基础上进行修改,找到 MainActivity.JAVA
private String[] files = {"rtmp demo","apple demo"};
在 listview 的 item 被点击后发送包含播放地址的 intentIntent intent = new Intent(MainActivity.this, VitamioVideoViewActivity.class);intent.putExtra("movieUrl", "rtmp://10.10.10.84/myapp/mystream");startActivity(intent);
【使用nginx-rtmp搭建最简单的直播系统】
推荐阅读
- 新买的电压力锅怎么处理才能使用 刚买的电压力锅怎么用
- 华为freebuds4i按键-华为freebuds4i使用教程-_1
- springmvc框架搭建 谈谈对springmvc框架的理解
- 苏泊尔全智能电压力锅使用方法 美的电压力锅使用方法
- win7激活工具使用方法 win7旗舰版激活工具
- 自然堂面膜怎么样到底能不能使用 自然堂面膜怎么样-
- 家里空调的正确使用方法 家里空调的正确使用方法视频
- 古代十八般兵器,谁是使用高手? 古代兵器
- 多用 电热锅?多功能电热锅使用教程
- 锡纸烤羊腿