windows下流媒体nginx-rmtp-module服务器搭建及java程序调用fmpeg将rtsp转rtmp直播流【转】
https://github.com/illuspas/nginx-rtmp-win32
http://bashell.sinaapp.com/archives/build-nginx-rtmp-module-on-windows.html
https://github.com/xaccc/nginx-rtmp-win32
https://github.com/luowei/nginx-rtmp-sample/blob/master/conf/nginx.new.conf
https://github.com/luowei/nginx-rtmp-sample
https://github.com/arut/nginx-rtmp-module
第一步:首先介绍一下所用相关技术
注:项目中使用的jwplayer插件,不支持rtsp协议,所以使用以下技术来进行转艺
- FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。在这里我只用到了它的视屏格式转换功能,将rtsp协议的视频流转成rtmp
- Rtsp协议(实时流传输协议):
公司用的是海康的监控地址为(rtsp://admin:12345@192.168.3.218/h264/ch1/main/av_stream)
3. Rtmp协议(实时消息传输协议 ):
RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5/nginx(这里我用到的NGINX)等。
4.Jwplayer是一个开源的在网页上使用的Flash视频、音频以及图片播放器
它支持播放的Adobe Flash Player和HTML5浏览器可以处理任何格式(FLV文件,H.264标准,MP4功能,VP8的,WEBM,支持MP3,AAC,JPG,PNG和GIF)。它也支持各种流和播放清单格式(包括RMTP协议,HTTP直播和更多)和多种播放选项。
5.nginx-rmtp-module是Nginx服务器的流媒体插件:
Nginx本身是一个非常出色的HTTP服务器,ffmpeg是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器.这个流媒体服务器可以支持RTMP和HLS(Live Http Stream)。
nginx配合ffmpeg做流媒体服务器的原理是:
nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流。(这里我是用jwplayer来访问这个rtmp地址)
第二步:相关软件的配置及应用
- 当前使用的nginx-1.5.8版本
(现在需要使用nginx-rtmp.exe这个程序, 网上可以搜索到该软件已经集成rtmp模块的windows版本)
2.打开conf文件夹找到nginx.conf文件,配置rtmp
(添加rtmp{....})
3.运行cmd命令,启动nginx.exe服务
(start nginx.exe:启动nginx服务,然后看进程中是否有nginx.exe)
4.打开网页输入:localhost或者127.0.0.1本机ip
(显示一下界面说明启动成功)
第三步:相关软件的配置及应用Nginx服务启动之后就可以执行ffmpeg命令进行rtsp协议转成rtmp:
ffmpeg -i "rtsp://admin:12345@192.168.3.218/h264/ch1/main/av_stream" -f flv -r 25 -s 640x480 -an "rtmp://192.168.3.138:1935/myapp/test2"
- 运行cmd:执行ffmpeg命令语句
ffmpeg:其实就是ffmpeg.exe,运行语句的时候.exe可不要
-i:后面是我所需要的摄像头协议
-f flv:后面是我要转到nginx的rtmp服务器上
-s:视频解析度:(分配率)也就是能调视屏的清晰度,如果在本机上测试建议640*480就好,改变视屏流的解析式cpu会消耗很大
(rtmp服务地址:rtmp://192.168.3.138:1935/myapp/test2)
192.168.3.138:nginx启动的机器ip
1935:端口号(之前在nginx.conf里配置的)
myapp:是application 后面的名称
test2:可以随便起,记得到时候访问rtmp时要一致
回车执行ffmpeg语句
(下面是我执行的结果,证明我的是执行成功的,通过ffmpeg把rtsp协议的摄像头的视屏流一直运行的转到nginx的rtmp视屏流服务器上)
第四步:配置jwplayer: 文件名JWplayer6.8.4616[(2014-06-28)(完美去水印
(网上下载的资源,这里主要用到jwplayer.js 以及 jwplayer.flash.swf两个,index.html里有一些参数介绍,其它文件的相应介绍自己可以百度jwplayer使用方法)
注:jwplayer貌似不支持在本地html页面中播放,要在服务器环境中实现播放
项目里只配置了自己所需的:
附:Java中执行ffmpeg语句如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public static boolean convertProtocol(String ffmpeg,String rtsp, String rtmp,String s){ // ffmpeg -i "rtsp://admin:12345@192.168.3.218/h264/ch1/main/av_stream" // -f flv -r 25 -s 640x480 -an "rtmp://192.168.3.138:1935/myapp/test2" List<String> commend = new ArrayList<String>(); commend.add(ffmpeg); commend.add( "-i" ); commend.add( "\"" +rtsp+ "\"" ); commend.add( "-f" ); commend.add( "flv" ); commend.add( "-r" ); commend.add( "25" ); commend.add( "-s" ); commend.add(s); commend.add( "-an" ); commend.add(rtmp); try { ProcessBuilder builder = new ProcessBuilder(); //创建系统进程 builder.command(commend); builder.start(); //启动进程 } catch (Exception e) { e.printStackTrace(); } return true ; } |
注:以上所涉及软件都可在网上找到,如果找不到或者有什么问题可微信我微信号:ccbabc
转载请注明出处谢谢
相关文章
- java获取本机IP
- java中三种方式获得类的字节码文件对象
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- Java实现ACMGoShopping
- Java实现 LeetCode 198 打家劫舍
- Java实现 LeetCode 86 分割链表
- java实现 洛谷 P1427 小鱼的数字游戏
- java实现第四届蓝桥杯梅森素数
- java实现算年龄
- java实现三角螺旋阵
- Java 蓝桥杯 算法训练 貌似化学
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- (转载)java多态(2)-------Java转型(向上或向下转型)
- 【JAVA】java中的length和length()
- Windows下配置Java环境变量
- 阿里巴巴 Java 开发手册 1.4.0
- java 11 标准Java异步HTTP客户端
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Atitit 纯java项目的提升进度大法---通用json dsl接口
- paip.截取字符串byLastDot方法总结uapi python java php c# 总结
- 【项目实战】MapStruct实战篇,Java中如何实现HashMap和实体类之间的转换
- 【java】Java生成微信小程序二维码
- 【java】Java 枚举(enum)如何使用以及原理
- Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法
- java的maven项目(三)私服的搭建(windows版)
- Java操作MongoDB时在insert后如何获取ObjectId
- java虚拟机和Dalvik虚拟机
- 我的Android进阶之旅------>Android编译错误java.util.zip.ZipException: duplicate entry的解决方法
- JAVA语言之Java 中不同的并行实现的性能比较
- Java Thread 多线程 介绍
- 下载各个版本java (Java Development Kit)
- 【java】Java并发编程--Java实现多线程的4种方式
- 【java】Java IO体系总览
- JAVA开发讲义(二)-Java程序设计之数据之谜一