java搭建rtmp服务器,利用docker搭建RTMP直播流服务器实现直播
一、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直播流服务器实现直播相关推荐
- 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) 一.方案简要 首先通过对开发方案的仔细研究(实时监控.流媒体.直播流方案的数据源-->协议转换-->服务器--&g ...
- 利用docker搭建服务器集群并部署大数据生态软件
1.集群搭建与配置 本来想使用centos镜像搭建服务器集群,但最小化安装版的镜像也需要1G左右,如果后面再部署一些大数据软件,单是多台服务器环境部署就会占用大量空间,加上此版本镜像在不同电脑环境的安 ...
- 利用docker搭建在线Markdown服务器
利用docker搭建在线Markdown服务器 [CodiMD] CentOS7服务器 1.安装docker和docker-compose 2.编写docker-compose.yml version ...
- win10本地利用docker搭建FATE【快速方法】
win10本地利用docker搭建FATE[快速方法] 本文介绍如何利用docker快速搭建FATE(需要的前期准备:安装win10对应版本的docker) 1.启动任意docker,与本地地址相映射 ...
- 利用 Docker 搭建单机的 Cloudera CDH 以及使用实践
利用 Docker 搭建单机的 Cloudera CDH 以及使用实践 想用 CDH 大礼包,于是先在 Mac 上和 Centos7.4 上分别搞个了单机的测试用.其实操作的流和使用到的命令差不多就一 ...
- 基于CectOS7利用docker搭建Vulhub漏洞靶机环境
基于CectOS7利用docker搭建Vulhub漏洞靶机环境 准备条件 第一步:在CentOS7上安装docker centos安装python3 安装 docker-compose docker- ...
- 利用docker搭建php7cms靶机
前言 今天应师父要求,写一篇利用docker搭建渗透靶机的文章来记录一下自己的菜鸟时光,要求是小白照着一步一步走就能搭建成功(即使我也是小白).想来想去还是从docker的安装说起吧. 一.docke ...
- LiveQing直播点播流媒体如何关闭指定类型的流播放HTTP-FLV直播流|WS-FLV直播流|HLS(m3u8)直播流|RTMP直播流
流媒体服务可以分发输出,HTTP-FLV直播流.WS-FLV直播流.HLS(m3u8)直播流.RTMP直播流,在某些场景下,我们不希望用户播放指定类型的流,那么如何做呢? RTMP直播点播流媒体服务 ...
- linux开启docker mysql_Linux服务器利用Docker快速搭建MySQL数据库
首先你要有一台Linux服务器 利用Xshell远程软件连接后就可以开始安装docker容器了. 1.第一步在Linux服务器上安装docker 2.第二步利用Docker拉取mysql镜像 Cent ...
- 服务器上建立docker作用,在服务器上利用Docker搭建ASF
为什么用Docker版? 因为Docker版本,不用装screen,管理起来也更方便. 搭建好基础安装Docker#CentOS 7.Debian.Ubuntu curl -sSL https://g ...
最新文章
- 字节跳动秋招超6000人,渣本双非的出路都被谁堵死了?
- 2017-2018-1 20155320 《信息安全系统设计基础》第十四周学习总结
- 51CTO推荐博客、博客之星名单【2014年】
- 微信公众平台开发--微信网页授权
- Unity中使用Protobuf3.0
- 书籍-微服务架构与实践
- java excel导出(基于注解)
- 三点估算法_三点估算法、方差计算、完工概率计算的讨论
- 天涯红旗linux,红旗linux安装中的几点技巧(转载)
- ffmpeg 视频音频合成新视频
- MVVM?继续搞一波
- Mybits新手入门之多表操作
- 《大象 Thinking in UML》学习笔记(一)——为什么需要UML?
- 工作自动扩张的时间管理与柳比歇夫时间记录统计(时间管理讲座笔记)
- 《power BI》 高级筛选器Filter 和Values人工造表 ALL 函数
- Chrome 扩展程序——Imagus:图片放大预览工具
- c++: Logger日志信息
- html怎么给图片加密,实现图片加密
- java 进阶笔记线程与并发之ForkJoinPool简析
- 全国邮编前缀归属省及其备注整理,血的代价整理输出,供大家参阅