前言:

最近项目需要把监控摄像机的RTSP流在放在浏览器上播放,但由于目前浏览器并不支持RTSP,需要转码才行。之前试过nginx作为流媒体服务器,这次尝试使用ffmpeg将码流推送srs流媒体服务器,实现浏览器端播放,特此记录一下。

SRS 是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT

源码地址:

githup: https://github.com/ossrs/srs

gitee:  https://gitee.com/ossrs/srs

1.在Liunx上编译安装SRS流媒体服务器

注意: 由于第一次安装的时候是先下载到window上,然后拖进liunx里的,

编译执行./configure 会出现这个 ”build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录“ 错误,

这个是windows和linux换行符不同导致的,然后重新在liunx直接下载了一遍就可以了。

//先把分支4.0release clone下来
git clone -b 4.0release https://gitee.com/ossrs/srs.git
//然后编译
cd srs/trunk
./configure && make

使用配置文件启动(这样启动需要在目录trunk中才行)

#使用配置文件srs.conf启动
./objs/srs -c conf/srs.conf# 查看SRS的状态
./etc/init.d/srs status#停止SRS
./etc/init.d/srs stop#重启SRS
./etc/init.d/srs restart# 或者看SRS的日志
tail -n 30 -f ./objs/srs.log

打开浏览器可以访问(我这个服务器的ip是192.168.13.170),有个控制台页面

http://192.168.13.170:8080/

2.Java使用ffmpeg推流

首先需要一个ffmpeg程序才行,没有的可以去ffmpeg官网下载

package com.ffmpeg.service;import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.core.util.IdUtil;
import lombok.SneakyThrows;import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;public class FFmpegUtil {{/** ffmpeg 命令详解*  ffmpeg [[options][`-i’ input_file]] {[options] output_file}*  options:*   -i: url 输入文件网址*   -vcodec: 设置视频编解码器 -codec:v  -c:v*   (强制使用codec编解码方式,如-vcodec xvid 使用xvid压缩 如果用copy表示原始编解码数据必须被拷贝)*   -acodec: 设置音频编解码器 -codec:a  -c:a*   -f: fmt 强制输入或输出文件格式*/}@SneakyThrowspublic static void srs(){String osName = System.getProperties().getProperty("os.name");System.out.println(osName);ClassPathResource classPathResource = new ClassPathResource("ffmpeg"+ File.separator+"win64"+ File.separator);String basePath = classPathResource.getAbsolutePath();String myStream = IdUtil.simpleUUID();String command = basePath + "ffmpeg -re " +"-rtsp_transport tcp " +"-i rtsp://admin:123456@192.168.13.199:554 " +"-c:v copy -c:a copy " +"-f flv rtmp://192.168.13.170/live/"+myStream;System.out.println("rtmp://192.168.13.170/live/"+myStream);Process process = Runtime.getRuntime().exec(command);BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));String line = null;while((line = br.readLine()) != null) {System.out.println("视频推流信息[" + line + "]");}}public static void main(String[] args) {srs();}}

 启动

可以进入浏览器控制台查看对应的视频了

要在web浏览器上播放,可以进入预览页面查看保存对应的js代码

附上SRS的Wiki

Java 搭建srs流媒体服务器,并使用ffmpeg推流相关推荐

  1. 海康摄像机视频rtsp转rtmp,windows下搭建nginx流媒体服务器,使用ffmpeg推流。

    1.运行nginx服务: cmd命令运行切换目录 cd/ e: cd E:\nginx nginx.exe -c conf/nginx-win.conf 2.ffmpeg视频推流 cmd命令切换目录 ...

  2. Docker 搭建 SRS 流媒体服务器

    1.SRS 简介 SRS(Simple RTMP Server) 是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群. githu ...

  3. FFmpeg入门详解之100:搭建Nginx流媒体服务器

    这里小编给大家推荐一款流媒体服务器Nginx,可以实现RTMP和HLS等.搭建完成后,可以使用FFmpeg推流,实现直播功能. 注意:操作环境是Ubuntu18.04, 总共分为几个步骤: 1.安装N ...

  4. SRS流媒体服务器——WebRTC推拉流演示

    SRS流媒体服务器--WebRTC推拉流 目录 WebRTC推拉流配置 WebRTC拉流演示 WebRTC推流演示 SRS官方WebRTC文档:https://github.com/ossrs/srs ...

  5. SRS流媒体服务器——服务器读取RTMP推流数据

    SRS流媒体服务器--服务器读取RTMP推流数据 目录 处理RTMP推流video message 处理RTMP推流audio message 处理RTMP推流onMetaData message S ...

  6. SRS流媒体服务器——RTMP推流、拉流创建连接

    SRS流媒体服务器--RTMP推流.拉流创建连接 目录 识别客户端,然后获取或者创建SrsLiveSource 启动推流 启动拉流 SRS安装部署相关内容: SRS流媒体服务器--单机环境搭建和源码目 ...

  7. 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发

    SRS 4.0开发环境搭建 视频讲解如下,点击观看: 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发 音视频高级开发学习学习资料链接:FFmpeg/WebR ...

  8. SRS流媒体服务器——Edge集群搭建

    SRS流媒体服务器--Edge集群搭建 目录 edge原理 dege配置 1. edge原理 SRS的Edge主要解决⼏条流有⼤量播放请求的场景,⽐如⼀个流有上万⼈观看. SRS的Edge能对接所有的 ...

  9. SRS流媒体服务器——Forward集群搭建和源码分析

    SRS流媒体服务器--Forward集群搭建和源码分析 目录 Forward集群原理 RTMP流转发(Forward)部署实例 Forward集群源码分析 1. Forward集群原理 Forward ...

  10. SRS流媒体服务器——单机环境搭建和源码目录介绍

    SRS流媒体服务器--单机环境搭建和源码目录介绍 1. 目录 环境搭建 源码目录介绍 1. 环境搭建 srs官⽹:https://github.com/ossrs/srs 码云的源速度快:https: ...

最新文章

  1. C++ 虚函数在基类与派生类对象间的表现及其分析
  2. 零基础python入门课程-零基础 Python 入门
  3. yii2 引入php文件,Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
  4. js操作改变原数组的解决方法
  5. Metricbeat添加ip address信息
  6. 滴滴回应高额抽成:确实存在;抖音火山版被判赔腾讯 800 万元;华为鸿蒙系统有望下月规模化推送|极客头条...
  7. Hystrix都停更了,我为什么还要学?
  8. 买不买D50的N个理由
  9. 简洁的 HTML5 音乐播放器
  10. windows 网络编程大汇总
  11. flag计算机语言的意思,flag是什么意思-c语言flag的用法
  12. 基于云计算运维毕业设计与制作
  13. 朋友圈为什么不做智能排序?
  14. 西安三日游-梦回长安
  15. 查看google浏览器里的证书
  16. 蒲公英内测托管平台是干什么的?
  17. AOP(五)之Around增强处理
  18. ceph客户端使用_CEPH应用
  19. Game boy模拟器(1):CPU
  20. ShaderJoy —— 多物体 Raymarching (图形拼接 + 地面投影)入门 【GLSL】

热门文章

  1. iOS YYText的使用笔记二(YYLabel聊天表情+文字并排)
  2. 【渝粤题库】国家开放大学2021春2018货币银行学题目
  3. c语言延时函数delay延时一秒_使用树莓派拍摄延时动画,制作GIF图
  4. golang 数组随机排序
  5. PMP备考经验分享 制表很重要
  6. 深度解读汽车域控制器
  7. Laravel框架实现中英文双语站
  8. 微信小程序实现语音播报
  9. 据说200G网盘资料
  10. 《动手学深度学习》Mxnet环境搭建