ZLMediaKit视频推流和播放步骤

这篇具有很好参考价值的文章主要介绍了ZLMediaKit视频推流和播放步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一下使用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,就可以看到正在推送的视频流了。文章来源地址https://www.toymoban.com/news/detail-401794.html

到了这里,关于ZLMediaKit视频推流和播放步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gstreamer推流SRT协议视频,VLC播放SRT视频(一)

    Secure Reliable Transport(SRT)是安全、可靠、低延时的多媒体实时传输协议。SRT协议使用AES进行数据加密,运用FEC进行前向纠错,并且有流量控制、拥塞控制。类似于QUIC协议,SRT采用UDP代替TCP,在应用层提供发送确认机制、ARQ自动重传,减少端到端的延迟。 SRT探测实时网络带宽状

    2024年01月22日
    浏览(38)
  • Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

    本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒

    2024年02月01日
    浏览(73)
  • ZLMediaKit推流测试

    ZLMediaKit支持rtsp/rtmp/rtp推流,一般通常使用obs/ffmpeg推流测试,其中FFmpeg推流命令支持以下: 1、使用rtsp方式推流 2、使用rtmp方式推流 3、使用rtp方式推流 如果推流成功,会打印这种日志:  日志中相关字符串分别代表:

    2024年02月12日
    浏览(34)
  • docker部署SRS实时视频服务器,rtmp推流,用WebRTC播放

    SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181 大家可以先去gitub上面看使用说明,地址是:v4_CN_Home · ossrs/srs Wiki · GitHub 然后我们通过docker去启动SRS,这些文档里面都有,就不用多说了,然后我们可以用rtmp推流 用WebRTC播放,首先要支持WebRTC我们需要

    2023年04月11日
    浏览(63)
  • vue3使用flv.js播放推流视频,完整版组件

    目录 前言 1、构建 2、销毁 3、断流、卡顿重连 4、报错、停滞重连 5、累计延时处理 6、手动全屏 前言 本人是在vue3中使用flv.js处理推流时,遇到的一些问题,以及处理办法,归纳总结为一个组件,仅限于推流使用。 目前只贴出部分关键代码,若需要完整的代码,请往github下

    2024年02月16日
    浏览(42)
  • web端实现rtsp实时推流视频播放可行性方案分析

    1.1 什么是WebRTC 百度概念 :WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装

    2024年02月16日
    浏览(37)
  • 基于javacv(推流),nginx(流媒体服务器),VCL(播放器)搭建直播视频

    目录 1.获取RTSP地址 2.搭建流媒体服务器 2.1下载资源 下载nginx  下载rtmp组件  启动nginx 测试工具(由于java代码调试问题,所以这里先下载一个转码推流的工具,其中javacv的原理也是它)可忽略  下载VLC(测试视频是否成功)  2.2测试向流媒体服务器推流 3.转码  4.查看监控数

    2024年02月06日
    浏览(85)
  • Android 内置RTSP/RTMP服务器,实现局域网内视频推流与播放

    工作中有一个需求,在同一个局域网内, 需要将Android平板端(车机)上的摄像头上的画面,实时传输到手机上进行播放。 对于这个需求,我们想到了用 RTSP/RTMP 进行推流,然后在手机端拉流进行播放。 这个技术方案的主要技术点有 平板端内置 RTSP/RTMP 服务器 平板端获取摄像头

    2023年04月27日
    浏览(96)
  • ZLMediaKit流媒体服务器 RTSP推流时候的堆栈

    先直接看图 这是ffmpeg向流媒体服务器推流时候的堆栈 引入C++ 11之后  堆栈会显得特别繁复冗余 看起来 也没有 以前没有C++11之前那样 简单明了   太复杂了 标记下  很多函数名字被我改了 因为原来的看起来 同名函数太多了 C++11 和lambada 匿名函数 让看堆栈 成了地狱模式 

    2023年04月20日
    浏览(57)
  • Python进行ffmpeg推流和拉流rtsp、rtmp + AI模型推理

    流媒体协议,英文学名Streaming Protocol,用一句人话来解释:流媒体协议是一种用于通过 Web 传递多媒体的协议。 传统视频流协议:RTMP和RTSP ,其中 RTMP 是基于 TCP 开发的,那么 RTSP 使用到了 UDP 。 底层协议:TCP 视频编解码器: H.264 音频编解码器:AAC 延迟:3 - 30 秒 RTMP 的最大

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包