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的开发者也说明 ...
随机推荐
- java 多线程和并行程序设计
多线程使得程序中的多个任务可以同时执行 在一个程序中允许同时运行多个任务.在许多程序设计语言中,多线程都是通过调用依赖系统的过程或函数来实现的 为什么需要多线程?多个线程如何在单处理器系统中同时运行? ...
- Linux的7个运行级别
0:关机 1:单用户(找回丢失密码)此模式下所有用户不需要密码即可登录,可用于重置密码 2:多用户状态没有网络服务 3:多用户状态有网络服务 ★ 4:系统未使用保留给用户 5:图形界面 ★ 6:系统重 ...
- 【windows核心编程】系统消息与自定义钩子(Hook)使用
一.HOOk Hook是程序设计中最为灵活多变的技巧之一,在windows下,Hook有两种含义: 1.系统提供的消息Hook机制 2.自定义的Hook编程技巧 其中,由系统提供的消息钩子机制是由一系 ...
- MySQL版本升级参考资料【转】
MySQL升级参考资料 MySQL 升级的最佳实践 - 技术翻译 - 开源中国社区https://www.oschina.net/translate/mysql-upgrade-best-practi ...
- 异步编程之使用yield from
异步编程之使用yield from yield from 是 Python3.3 后新加的语言结构.yield from的主要功能是打开双向通道,把最外层的调用方法与最内层的子生成器连接起来.这两者就 ...
- cacti系列(三)之cacti添加对mysql服务器主从的监控
1.配置主从同步 主服务器: 建立从服务器的复制权限账号 GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.16 ...
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.42方案 整体方案: 环境准备,在备用服务器安装mysql5.5数据库 1.停用生产环境的应用访问 直接修改web的访 ...
- GitHub上README.md的简单介绍
1.编辑README文件 大标题(一级标题):在文本下面加等于号,那么上方的文字就变成了大标题,等于号的个数无限制,但一定要大于0 大标题 ==== 中标题(二级标题):在文本下面加下划线,那么上方的 ...
- PYTHON-函数对象,嵌套,名称空间与作用域,闭包函数
一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 def foo(): return len f = foo pri ...
- OCM_第二十天课程:Section9 —》Data Guard _ DATA GUARD 搭建/DATA GUARD 管理
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...