Easydarwin加FFMPEG实现HLS流视频点播
前言
最近有点迷茫,所以将自己用过的东西写个Demo记录一下,复习复习。
具体实现:
Easydarwin 一个开源的好用的流媒体平台框架。
FFMPEG 一个视频音频处理神器,就是用起来有点麻烦,必须保证命令正确。
FFMPEG将视频或者视频地址(Rtsp,Rtmp)转码推流到EasyDarwin做转发,FFMPEG将EasyDarwin视频做切片成M3U8文件。
网站直接访问M3U8文件,实现HLS点播。算是一个粗糙的Demo,具体可以根据需求更改。
参考:
FFMPEG:
EasyDarwin:
实现过程
EasyDarwin 下载解压之后如下:

现在这个已经很完善了,最开始用的使用bat文件启动,而且没有这个简洁,
Easydarwin.ini 配置项和注意事项可以自己配置也可以使用默认配置。
单击 ServiceInstall-EasyDarwin.exe 等待安装完成如下:

打开浏览器,输入 http://127.0.0.1:10008 可以看到设备当前运行状态和推流拉流的列表,效果界面如下:

测试视频地址: rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
这个地址公开的,算是比较稳定的,以前测试可以用现在还是可以,有些地址就没办法访问了。
使用cmd输入 ffmpeg.exe -i "RTSP地址" -vcodec copy -acodec copy -rtsp_transport tcp -f rtsp "推流地址"
Rtsp默认为554端口,RTSP地址为最后实际使用的地址,推流为 rtsp://127.0.0.1/test.hls 127.0.0.1本地测试,远程为推流服务IP
例子: ffmpeg.exe -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -vcodec copy -acodec copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test.hls
具体命令行参数详解参考:官网参考
每次使用。。。都是头大,用过之后吧命令记下来,需要更改就一个个看。
推流成功,cmd窗口如下会不停的刷新当前参数:

此时EasyDarwin网站推流列表会显示对应地址和可以拉流的地址如下:

验证该播放地址是否可以播放,可以使用VLC输入该地址测试。
此时推流和接收部分完成,只需要用FFMPEG获取播放地址的数据进行切片获取M3U8,网站播放。
在打开一个cmd,命令如下:
ffmpeg.exe -i rtsp://127.0.0.1/test.hls -fflags flush_packets -max_delay 2 -hls_flags delete_segments -hls_time 2 -g 30 ********\live.m3u8
红色部分,第一个为EasyDarwin转发的播放地址,第二个为live.m3u8文件的保存路径,成功之后效果图如下:

此时在网站中访问这个地址,就可以实现HLS点播。
网站实现:
首先下载一个 hls.js的库文件:地址
代码实现:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
<script src="hls.js"></script> //下载的hls.js 文件路径
<script>
function btn_OpenHls() {
var htmlvideo = document.getElementById("videoPaly");
htmlvideo.controls = true;
var hls = new Hls();
hls.loadSource("/live.m3u8");//m3u8文件路径
hls.attachMedia(htmlvideo);
hls.on(Hls.Events.MANIFEST_PARSED, function () {
htmlvideo.play();
});
}
</script>
</head>
<body>
<button onclick="btn_OpenHls()">打开HLS视频</button>
<video id="></video>
</body>
</html>


总结
很多时候我们站在了巨人的肩膀上,很多东西发现了才知道自己渺小。
第一次接触FFMPEG内心就一句话:“卧槽,这个东西好方便,写这个东西的人好牛逼”。
第一次使用EasyDarwin感觉很麻烦,后面发现真的好用简单了很多。
给自己加个油,努力,奋斗~~~~~~~
Easydarwin加FFMPEG实现HLS流视频点播的更多相关文章
- ffmpeg 发布hls流
本来主要讲述如何利用ffmpeg将输入视频流通过转码的方式转成m3u8文件.如何通过http的方法将切边推送给客户端,不在本文中讲述. 输入视频流可以是rtsp流,也可以是http,还可以是文件等等. ...
- ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
一.FFmpeg下载:http://ffmpeg.zeranoe.com/builds/ 下载并解压FFmpeg文件夹,配置环境变量:在“Path”变量原有变量值内容上加上d:\ffmpeg\bin, ...
- 使用ffmpeg搭建HLS直播系统
[时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. ...
- 转:Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解
转:http://itindex.net/detail/51186-nginx-ffmpeg-hls 本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体 ...
- ffmpeg接收rtsp流问题
项目使用mingw环境g++5.3,C++调用ffmpeg接收rtsp流,再通过C#显示.结构上是C#调用C++的so文件,读取得到的视频帧(RGB888格式),通过图片控件显示. 一开始是使用ope ...
- EasyNVR、EasyDSS二次开发之:RTMP、HLS流在web页面进行无插件播放示例Demo代码
不管是基于EasyNVR还是EasyDSS,都是支持无插件直播,这也是未来视频直播的一个趋势.对于传统的浏览器插件播放谁用谁知道: 以上是软件自带播放展示 背景需求 对于EasyNVR和EasyDSS ...
- Nginx+ffmpeg的HLS开源服务器搭建配置及开发详
本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 ,真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋 ...
- Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释
本文概述: 至眼下为止.HLS 是移动平台上很重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 .真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友 ...
- 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题
项目中使用的播放器是ijkPlayer,发现播放切片特点的hls流(m3u8格式的视频)拖动seekBar的时候会莫名的跳转或者seek不到准确的位置,发现网友也遇到了同样的问题,ijk的开发者也说明 ...
随机推荐
- mysql 案例~mysql主从复制延迟处理(2)
一 简介:今天来聊聊周期性从库延迟的问题,是上一篇的基础分析的一个场景 二 背景:近期每天的指定时间段,收到从库延迟的报警,然后过一段时间恢复.由于从库是提供读服务的,所以需要解决 三 分析思路: 1 ...
- NFS配置不当导致的那些事儿
NFS(Network File System):是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源: NFS配置:(声明:以下NFS实验是在RedHat7上 ...
- SpringBoot处理静态资源的两种方式
静态资源是指----> CSS.JS之类的文件 首先创建SpringBoot Web项目 添加Spring Boot Web Starter <dependency> <gro ...
- 【vim】实时计算器
在插入模式下,你可以使用 Ctrl+r 键然后输入 =,再输入一个简单的算式.按 Enter 键,计算结果就会插入到文件中.例如,尝试输入: Ctrl+r '=2+2' ENTER 然后计算结果&qu ...
- High level GPU programming in C++
https://github.com/prem30488/C2CUDATranslator http://www.training.prace-ri.eu/uploads/tx_pracetmo/GP ...
- saltStack的event接口通过mysql数据库接收SaltStack批量管理日志
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- OneNET麒麟座应用开发之七:控制采样电机
气体采样采用主动抽取气体的方式保证充足而平稳的气流,所以我们采用气泵抽取气体来完成. 1.设计概述 客户对这部分要求能够设定电机的速度,但并不需要动态调节.对电机的控制有很多方式,我们采用比较简单的方 ...
- myeclipse2017 安装包及破解插件的下载
一:安装包下载 链接:http://pan.baidu.com/s/1miIFqha 密码:nz7h 二:操作步骤 因为工作中需要有多个MyEclipse去管理不同的项目组的工作,恰逢MyEclips ...
- 在 Win 7或8 下使用 VirtualBOX 虚拟机安装 OS X 10.11 El Capitan 及 Xcode 7.0
注:本文源自于: http://bbs.feng.com/read-htm-tid-9908410.html _____________________________________________ ...
- js继承的几种实现方法
一.用function实现: function Person(name) { this.name = name; } Person.prototype.getName = function() { r ...