记录一下使用ZLMediaKit轻量级流媒体服务器进行视频推流和播放的步骤,以免后期遗忘:

一、首先要开启ZLMediaKit流服务器,或者启动带rtmp的nginx,这里采用第一种方案
cd ZLMediaKit编译后的执行文件目录
./MediaServer -d &                #后台启动ZLMediaKit
Postman 2>&1 &                    #启动Postman,用于添加流代理

二、在Postman中添加流代理
在Postman中加载ZLMediaKit的链接配置,切换到添加流代理命令卡,执行添加流代理命令,其中
secret: 在本机上使用默认secret
vhost: 在本机上使用默认vhost "__defaultVhost__"
app: "live"
stream: "test"
url: "rtmp://127.0.0.1:1935/test/video"
enable_rtsp: true
enable_rtmp: true
enable_hls: true
执行该命令后,ZLMediaKit将从rtmp://127.0.0.1:1935/test/video中获取源视频,并从ZLMediaKit配置文件中规定的端口地址推流出去,rtmp地址为rtmp://127.0.0.1:1935/live/test,  rtsp的地址是rtsp://127.0.0.1:8554/live/test

三、推流
1、从摄像头推流命令:
1) gstreamer推流:gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw, width=1280, height=720, framerate=10/1' ! queue ! videoconvert ! x264enc ! h264parse ! flvmux ! rtmpsink location=rtmp://127.0.0.1:1935/test/video
2) ffmpeg推流:ffmpeg -re -f video4linux2 -s 1280x720 -i /dev/video0  -vcodec libx264 -f flv  -y rtmp://127.0.0.1/test/video

2、从文件推流命令:
1) gstreamer推流:gst-launch-1.0 filesrc location=xxx.mp4 ! qtdemux name=d d.video_0 ! h264parse ! flvmux ! rtmpsink location=rtmp://127.0.0.1:1935/test/video
2) ffmpeg推流: ffmpeg -re -stream_loop -1 -i xxx.mp4 -vcodec copy -acodec copy -f flv -y rtmp://127.0.0.1:1935/test/video

四、播放
gstreamer播放:gst-launch-1.0 rtspsrc location=rtsp://127.0.0.1:8554/live/test protocols=4 ! rtph264depay !  h264parse ! avdec_h264 ! videoconvert ! xvimagesink
ffplay播放:ffplay -i rtsp://127.0.0.1:8554/live/test

五、在浏览器中播放
在浏览器中播放需要用到video.js和videojs-contrib-hls这两个插件,而这两个插件需要npm安装。由于对前端的技术不熟悉,一开始面对nodejs、npm、vue等东西一脸蒙圈,还下载了video.js和http-streaming源码试图编译:<(。折腾了好久才把这两个插件装上去。
1、安装nodejs和npm
sudo apt install nodejs npm
输入 npm -v查看到版本号,说明npm正常安装
2、安装 cnpm(淘宝镜像npm)
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
3、安装videojs和videojs-contrib-hls
进入到ZLMediaKit编译后的www文件夹,一般是 ZLMediaKit/release/linux/Debug/www
cnpm install --save video.js
cnpm install --save videojs-contrib-hls
执行完上面两条命令后,会在www目录下新增一个node_modules文件夹,里面包含了npm安装的以上两个模块。如果用npm install -g video.js,则会将video.js安装到npm的全局模块目录下(一般是/usr/local/lib/node_modules)。
4、新建一个videotest.html页面用于在浏览器显示,内容如下

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>前端播放m3u8格式视频</title><!-- 这个是videojs的CDN网站,这里用本地的video.js,所以注释掉以下几行 --><!--https://www.bootcdn.cn/video.js/ --><!-- <link href="https://cdn.bootcdn.net/ajax/libs/video.js/7.19.0/alt/video-js-cdn.css" rel="stylesheet"> --><!-- <script src="https://cdn.bootcdn.net/ajax/libs/video.js/7.19.0/alt/video.core.min.js"></script> --><!--https://www.bootcdn.cn/videojs-contrib-hls/--><!-- <script src="https://cdn.bootcss.com/videojs-contrib-hls/5.15.0/videojs-contrib-hls.min.js"></script> --><link href="/node_modules/video.js/dist/video-js.min.css" rel="stylesheet"><script src="/node_modules/video.js/dist/video.min.js" charset="utf-8"></script><script src="/node_modules/videojs-contrib-hls/dist/videojs-contrib-hls.min.js"></script>
</head><body><video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" width="1080" height="708" data-setup='{}'> <!-- <source id="source" src="https://hqcrm.oss-cn-shenzhen.aliyuncs.com/cloudRecord/44a8cc12038c464f96ad204b1981ee05/3ccd283e9d42022539df549425c11d11_255547796.m3u8" type="application/x-mpegURL"> --><source id="source" src="/live/test/hls.m3u8" type="application/x-mpegURL"></video>
</body><script> // videojs 简单使用 var myVideo = videojs('myVideo',{bigPlayButton : true, textTrackDisplay : false, posterImage: false,errorDisplay : false,})myVideo.play() // 视频播放myVideo.pause() // 视频暂停
</script></html>

然后在浏览器中输入 http://localhost:8080/videotest.html,就可以看到正在推送的视频流了。

ZLMediaKit视频推流和播放步骤相关推荐

  1. Android 内置RTSP/RTMP服务器,实现局域网内视频推流与播放

    1. 背景 工作中有一个需求,在同一个局域网内, 需要将Android平板端(车机)上的摄像头上的画面,实时传输到手机上进行播放. 对于这个需求,我们想到了用RTSP/RTMP进行推流,然后在手机端拉 ...

  2. 摄像头视频推流python_摄像头视频推流装置及方法与流程

    本发明涉及视频推流技术领域,尤其涉及一种摄像头视频推流装置及方法. 背景技术: 在机器人领域,USB摄像头使用范围很广泛.USB摄像头安装于机器人本体,其采集的视频流需要推送到上位机或者云端. 对于l ...

  3. 使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放

    使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放 独立观察员 2020 年 8 月 25 日 一.摄像机 GB28181 配置 打 ...

  4. java rtmp推流_视频直播生成推流和播放地址的Java代码示例

    概述 直播推流地址和播放地址本身没有API接口,需要在客户端自行拼接地址,然后使用推流工具或者播放器对其推流或播放.本文主要介绍如何生成直播的推流以及播放地址. 详细信息 视频直播生成推流和播放地址的 ...

  5. 海康大华等网络摄像机监控视频RTSP/RTMP推流网页播放/直播无需插件低延迟解决方案研究

    市面上常见监控视频推流方案简介 当前如果想要将监控视频在浏览器中播放,有几种常见的办法如下: 1.获取摄像头RTSP流,使用FFmpeg或者程序如JavaCV或者其他方式,将其推流成RTMP,通过服务 ...

  6. 计算机无法播放器,电脑自带播放器播放不了视频怎么办 几个步骤轻松解决

    电脑自带播放器播放不了视频怎么办?虽然现在的很多用户都会从电脑网页上视频,但是还有不少的用户会下载视频来看,但是有用户发现使用自带播放器播放视频出现无法播放的情况,这是怎么回事?要如何操作才能解决呢? ...

  7. 视频直播生成推流和播放地址的Java代码示例

    视频直播生成推流和播放地址的Java示例代码如下所示. import java.math.BigInteger; import java.security.MessageDigest; import ...

  8. 海思开发板FFmpeg+Nginx,推流RTMP播放(优秀教程收集+实操整理)

    海思开发板FFmpeg+Nginx推流RTSP播放(优秀教程收集+实操整理) 安装FFmpeg及移植 FFmpeg编译问题收录: static declaration of 'cbrt' follow ...

  9. 视频和语音播放(进行中)

    点播,直播,VR(录制音频和视频,在线的和本地的),视频播放器和音乐播放器(播放音乐和视频),视频和语音 VideoView并不是支持播放所有格式的视频,它仅支持mp4和3gp格式的文件,实际上它的本 ...

最新文章

  1. javascript编译与运行机理(1)--
  2. python的5种高级用法
  3. 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)
  4. Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类
  5. TypeScript 官方决定全面采用 ESLint
  6. RESTful API标准设计教程
  7. 底层I/O性能大PK:Python/Java被碾压,Rust有望取代C++
  8. Mybatis编写初始化Dao代码
  9. Node.js:npm下载很慢,设置国内淘宝镜像
  10. DDoS异常流量清洗解决方案
  11. python revit二次开发_Revit二次开发06
  12. link.html百度云,网盘链接自取
  13. 什么?阿里巴巴不允许工程师直接使用Log4j和Logback的API!
  14. 计算机主机实际功率,PC动力之源,一起来算算电源真实功率吧!
  15. Dojo: Quick Start
  16. make: *** [config-host.mak] Error 1
  17. apache安装完成后,语法检查一直报错,哭唧唧T ^ T
  18. PX4多冗余传感器代码解读
  19. linux 五种 IO 模型
  20. 进阶实验4-3.5 哈夫曼编码 (30 分)

热门文章

  1. Android如何定制主题
  2. NG_ML_Cousera_Summary
  3. c语言课程设计宠物店,c语言课程设计-宠物店信息管理系统.doc
  4. C++ string大小写转换
  5. 物理层 ,物理层功能,物理层设备,通信方式,物理层传输介质
  6. linux系统下alsa设备,linux alsa配置
  7. 基于Hadoop豆瓣电影数据分析(综合实验)
  8. uniapp自定义步骤条
  9. 计算机科学与技术的论文致谢,毕业论文致谢200字(精选7篇)
  10. 关于node链接数据库Handshake inactivity timeout