# ffmpeg-push-maven **Repository Path**: simplelu/ffmpeg-push-maven ## Basic Information - **Project Name**: ffmpeg-push-maven - **Description**: ffmpeg转流 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-11 - **Last Updated**: 2021-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README >背景介绍:当摄像头输的流为RTSP流时,播放此格式的流需要在支持FLash插件的浏览器上。但是,目前大多数浏览器不支持Flash插件,因此该项目应运而生。该项目把RTSP的流转 为RTMP的流同时输出HTTP的流,HTTP的流可在前端页面通过flv.js进行播放。 >所需环境:ffmpeg、nginx-http-flv-module流媒体 #### 1、ProcessManage类 - 初始化无参构造函数:可以kill项目异常关闭时遗留的ffmpeg进程(推荐项目启动时进行此操作) ```java ProcessManage manage = new ProcessManage(); ``` - push:推一路rtsp流转rtmp流 ```java String ffmpegPath = "ffmpeg"; String ffprobePath = "ffprobe"; ProcessManage processManage = new ProcessManage(ffmpegPath, ffprobePath); String id = processManage.push(rtspUrl, ip, rtmpPort, httpPort, timeMillis); ``` ProcessManage有参构造函数 | 字段 | 类型 | 说明 | | :---------: | :----: | :-----------: | | ffmpegPath | String | ffmpeg的路径 | | ffprobePath | String | ffprobe的路径 | push方法 | 字段 | 类型 | 说明 | | :--------: | :-----: | :------------------------------------------------------: | | rtspUrl | String | rtsp流地址 | | ip | String | ip地址 | | rtmpPort | Integer | 转成rtmp流的端口(与nginx相关配置统一) | | httpPort | Integer | 转成http流的端口(与nginx相关配置统一) | | timeMillis | long | 单位:毫秒,探测rtsp流地址超时时间(如果超时则push失败) | | id | String | 返回的此推流进程的内部标识 | ​ ffmpeg指令可能需要支持更多的参数(编码、分辨率) - stop:停止一路rtsp流转rtmp流 ```java ProcessManage processManage = new ProcessManage(); boolean stop = processManage.stop(id); ``` stop方法 | 字段 | 类型 | 说明 | | :--: | :-----: | :----------------: | | id | String | 推流进程的内部标识 | | stop | boolean | 停止进程的结果 | - list:所有的rtsp流转rtmp流进程 ```java ProcessManage processManage = new ProcessManage(); List ids = processManage.list(); ``` list方法 | 字段 | 类型 | 说明 | | :--: | :----------: | :----------------------: | | ids | List | 推流进程的内部标识的集合 | - get:获取推流进程的rtmp流地址、http流地址、pid(linux中) ```java ProcessManage processManage = new ProcessManage(); String pid = processManage.get(id, Opt.PID); String rtmp = processManage.get(id, Opt.RTMP); String http = processManage.get(id, Opt.HTTP); ``` get方法 | 字段 | 类型 | 说明 | | :-------------------------: | :---------: | :------------------------------------: | | id | String | 推流进程的内部标识 | | Opt.PID、Opt.RTMP、Opt.HTTP | Opt(枚举) | pid(linux中)、rtmp流地址、http流地址 | #### 2、pom文件引用 > 以下示例,jar包放置于项目的`/src/main/resources/lib`目录下 ```java com.jitu ffmpeg-push-maven 1.0 org.apache.commons commons-lang3 3.11 net.java.dev.jna jna 5.7.0 org.apache.maven.plugins maven-install-plugin 2.5.2 install-ffmpeg-push-maven clean ${pom.basedir}/src/main/resources/lib/ffmpeg-push-maven-1.0.jar default com.jitu ffmpeg-push-maven 1.0 jar true install-file ```