一、rtmp服务器搭建

环境:

centos 7.*

1.先安装docker(省略)

2.下载docker容器

docker pull alfg/nginx-rtmp

3.运行容器(记得打开防火墙端口 1935和8080)

docker run -it -p 1935:1935 -p 8080:80 --rm nginx-rtmp

二、推流方式

ok rtmp服务器 搭建成功,接下来就是推流了(这里列举三种方式)

第一种:利用OBS Studio推送直播到这个地址

rtmp://服务器ip:1935/stream/自定义名称

第二种:ffmpeg推送本地视频为直播流

ffmpeg -re -i /home/holle.flv -vcodec copy -acodec aac -ar 44100 -f flv rtmp://192.168.1.201:1935/stream/example

第三种:利用javacv推本地摄像头视频到流媒体服务器(代码实现如下)

import javax.swing.JFrame;

import org.bytedeco.javacpp.Loader;

import org.bytedeco.javacpp.avcodec;

import org.bytedeco.javacpp.opencv_core;

import org.bytedeco.javacpp.opencv_objdetect;

import org.bytedeco.javacv.*;

import org.bytedeco.javacv.FrameGrabber.Exception;

public class JavavcCameraTest

{

public static void recordCamera(String outputFile, double frameRate)

throws Exception, InterruptedException, org.bytedeco.javacv.FrameRecorder.Exception {

Loader.load(opencv_objdetect.class);

FrameGrabber grabber = FrameGrabber.createDefault(0);//本机摄像头默认0,这里使用javacv的抓取器,至于使用的是ffmpeg还是opencv,请自行查看源码

grabber.start();//开启抓取器

OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();//转换器

opencv_core.IplImage grabbedImage = converter.convert(grabber.grab());//抓取一帧视频并将其转换为图像,至于用这个图像用来做什么?加水印,人脸识别等等自行添加

int width = grabbedImage.width();

int height = grabbedImage.height();

FrameRecorder recorder = FrameRecorder.createDefault(outputFile, width, height);

recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); // avcodec.AV_CODEC_ID_H264,编码

recorder.setFormat("flv");//封装格式,如果是推送到rtmp就必须是flv封装格式

recorder.setFrameRate(frameRate);

recorder.start();//开启录制器

long startTime=0;

long videoTS=0;

CanvasFrame frame = new CanvasFrame("camera", CanvasFrame.getDefaultGamma() / grabber.getGamma());

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setAlwaysOnTop(true);

Frame rotatedFrame=converter.convert(grabbedImage);//不知道为什么这里不做转换就不能推到rtmp

while (frame.isVisible() && (grabbedImage = converter.convert(grabber.grab())) != null) {

rotatedFrame = converter.convert(grabbedImage);

frame.showImage(rotatedFrame);

if (startTime == 0) {

startTime = System.currentTimeMillis();

}

videoTS = 1000 * (System.currentTimeMillis() - startTime);

recorder.setTimestamp(videoTS);

recorder.record(rotatedFrame);

Thread.sleep(40);

}

frame.dispose();

recorder.stop();

recorder.release();

grabber.stop();

}

public static void main(String[] args) throws Exception, InterruptedException, org.bytedeco.javacv.FrameRecorder.Exception {

// recordCamera("D:\\example.mp4",25); //保持到本地

recordCamera("rtmp://192.168.1.201:1935/stream/example",25); //推流到rtmp服务器

}

}

javacv依赖

org.bytedeco

javacv-platform

1.3.2

三、观看直播(rtmp流)

观看 rtmp流 可以用PotPlayer

菜单——打开——打开链接  贴入rtmp流地址  即可播放了

rtmp://192.168.1.201:1935/stream/example

参考:

https://hub.docker.com/r/alfg/nginx-rtmp/

https://blog.csdn.net/eguid_1/article/details/52678775

java搭建rtmp服务器,利用docker搭建RTMP直播流服务器实现直播相关推荐

  1. 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)

    欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) 一.方案简要 首先通过对开发方案的仔细研究(实时监控.流媒体.直播流方案的数据源-->协议转换-->服务器--&g ...

  2. 利用docker搭建服务器集群并部署大数据生态软件

    1.集群搭建与配置 本来想使用centos镜像搭建服务器集群,但最小化安装版的镜像也需要1G左右,如果后面再部署一些大数据软件,单是多台服务器环境部署就会占用大量空间,加上此版本镜像在不同电脑环境的安 ...

  3. 利用docker搭建在线Markdown服务器

    利用docker搭建在线Markdown服务器 [CodiMD] CentOS7服务器 1.安装docker和docker-compose 2.编写docker-compose.yml version ...

  4. win10本地利用docker搭建FATE【快速方法】

    win10本地利用docker搭建FATE[快速方法] 本文介绍如何利用docker快速搭建FATE(需要的前期准备:安装win10对应版本的docker) 1.启动任意docker,与本地地址相映射 ...

  5. 利用 Docker 搭建单机的 Cloudera CDH 以及使用实践

    利用 Docker 搭建单机的 Cloudera CDH 以及使用实践 想用 CDH 大礼包,于是先在 Mac 上和 Centos7.4 上分别搞个了单机的测试用.其实操作的流和使用到的命令差不多就一 ...

  6. 基于CectOS7利用docker搭建Vulhub漏洞靶机环境

    基于CectOS7利用docker搭建Vulhub漏洞靶机环境 准备条件 第一步:在CentOS7上安装docker centos安装python3 安装 docker-compose docker- ...

  7. 利用docker搭建php7cms靶机

    前言 今天应师父要求,写一篇利用docker搭建渗透靶机的文章来记录一下自己的菜鸟时光,要求是小白照着一步一步走就能搭建成功(即使我也是小白).想来想去还是从docker的安装说起吧. 一.docke ...

  8. LiveQing直播点播流媒体如何关闭指定类型的流播放HTTP-FLV直播流|WS-FLV直播流|HLS(m3u8)直播流|RTMP直播流

    流媒体服务可以分发输出,HTTP-FLV直播流.WS-FLV直播流.HLS(m3u8)直播流.RTMP直播流,在某些场景下,我们不希望用户播放指定类型的流,那么如何做呢? RTMP直播点播流媒体服务 ...

  9. linux开启docker mysql_Linux服务器利用Docker快速搭建MySQL数据库

    首先你要有一台Linux服务器 利用Xshell远程软件连接后就可以开始安装docker容器了. 1.第一步在Linux服务器上安装docker 2.第二步利用Docker拉取mysql镜像 Cent ...

  10. 服务器上建立docker作用,在服务器上利用Docker搭建ASF

    为什么用Docker版? 因为Docker版本,不用装screen,管理起来也更方便. 搭建好基础安装Docker#CentOS 7.Debian.Ubuntu curl -sSL https://g ...

最新文章

  1. 字节跳动秋招超6000人,渣本双非的出路都被谁堵死了?
  2. 2017-2018-1 20155320 《信息安全系统设计基础》第十四周学习总结
  3. 51CTO推荐博客、博客之星名单【2014年】
  4. 微信公众平台开发--微信网页授权
  5. Unity中使用Protobuf3.0
  6. 书籍-微服务架构与实践
  7. java excel导出(基于注解)
  8. 三点估算法_三点估算法、方差计算、完工概率计算的讨论
  9. 天涯红旗linux,红旗linux安装中的几点技巧(转载)
  10. ffmpeg 视频音频合成新视频
  11. MVVM?继续搞一波
  12. Mybits新手入门之多表操作
  13. 《大象 Thinking in UML》学习笔记(一)——为什么需要UML?
  14. 工作自动扩张的时间管理与柳比歇夫时间记录统计(时间管理讲座笔记)
  15. 《power BI》 高级筛选器Filter 和Values人工造表 ALL 函数
  16. Chrome 扩展程序——Imagus:图片放大预览工具
  17. c++: Logger日志信息
  18. html怎么给图片加密,实现图片加密
  19. java 进阶笔记线程与并发之ForkJoinPool简析
  20. 全国邮编前缀归属省及其备注整理,血的代价整理输出,供大家参阅

热门文章

  1. 深度学习还是鼠标搞定,零基础建网站必备技能
  2. ftp服务器FileZilla Server详细配置教程
  3. Python+OpenCV+PyQt5+多线程实现桌面监控程序
  4. 拉登是我罩的队_软件需求规格说明书
  5. mysql sql语句优化面试题_SQL面试题之SQL优化
  6. Eucalyptus云平台搭建
  7. 诊所 金卫系统 青岛_金卫信预防接种数字化门诊全程质量管理系统.doc
  8. 微软文本转语音小工具(Text to speech)
  9. 微信开发者工具之WXS和简单组件
  10. 苹果电脑壁纸打包下载,macbook自带壁纸下载