前言

最近有点迷茫,所以将自己用过的东西写个Demo记录一下,复习复习。

具体实现:

Easydarwin 一个开源的好用的流媒体平台框架。

FFMPEG  一个视频音频处理神器,就是用起来有点麻烦,必须保证命令正确。

FFMPEG将视频或者视频地址(Rtsp,Rtmp)转码推流到EasyDarwin做转发,FFMPEG将EasyDarwin视频做切片成M3U8文件。

网站直接访问M3U8文件,实现HLS点播。算是一个粗糙的Demo,具体可以根据需求更改。

参考:

FFMPEG:

官网参考

流媒体具体命令参考

下载地址

EasyDarwin:

Easydarwin官网

Github地址

下载地址

实现过程

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流视频点播的更多相关文章

  1. ffmpeg 发布hls流

    本来主要讲述如何利用ffmpeg将输入视频流通过转码的方式转成m3u8文件.如何通过http的方法将切边推送给客户端,不在本文中讲述. 输入视频流可以是rtsp流,也可以是http,还可以是文件等等. ...

  2. ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频

    一.FFmpeg下载:http://ffmpeg.zeranoe.com/builds/ 下载并解压FFmpeg文件夹,配置环境变量:在“Path”变量原有变量值内容上加上d:\ffmpeg\bin, ...

  3. 使用ffmpeg搭建HLS直播系统

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. ...

  4. 转:Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解

    转:http://itindex.net/detail/51186-nginx-ffmpeg-hls 本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体 ...

  5. ffmpeg接收rtsp流问题

    项目使用mingw环境g++5.3,C++调用ffmpeg接收rtsp流,再通过C#显示.结构上是C#调用C++的so文件,读取得到的视频帧(RGB888格式),通过图片控件显示. 一开始是使用ope ...

  6. EasyNVR、EasyDSS二次开发之:RTMP、HLS流在web页面进行无插件播放示例Demo代码

    不管是基于EasyNVR还是EasyDSS,都是支持无插件直播,这也是未来视频直播的一个趋势.对于传统的浏览器插件播放谁用谁知道: 以上是软件自带播放展示 背景需求 对于EasyNVR和EasyDSS ...

  7. Nginx+ffmpeg的HLS开源服务器搭建配置及开发详

    本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 ,真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋 ...

  8. Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释

    本文概述: 至眼下为止.HLS 是移动平台上很重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 .真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友 ...

  9. 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题

    项目中使用的播放器是ijkPlayer,发现播放切片特点的hls流(m3u8格式的视频)拖动seekBar的时候会莫名的跳转或者seek不到准确的位置,发现网友也遇到了同样的问题,ijk的开发者也说明 ...

随机推荐

  1. 在css中控制图像的大小

    可在CSS中利用width属性和height属性控制一个图像得到大小,就像控制其他任何盒子的大小一样. <html> <head> <title>TODO supp ...

  2. Maven安装配置操作

    1)下载maven安装包并解压: 2)环境变量配置: 3)编辑环境变量Path,追加%MAVEN_HOME%\bin; 4)maven安装配置后进行dos命令检查:在cmd中输入 mvn -v 5)配 ...

  3. oracle建包,函数demo

    create table BOOK ( BOOK_ID NUMBER(10), BOOK_NAME VARCHAR2(10) ); create or replace package chen_pac ...

  4. Linux压缩和解压缩类指令

    ⒈gzip ①gzip 文件 压缩文件,只能将文件压缩为*.gz文件 ②gunzip 文件.gz 用于解压文件 ⒉zip ①zip [选项] xxx.zip 需要压缩的内容 压缩文件和目录 常用选项: ...

  5. vc++调用exe获取输出信息

    目的 调用命令行程序,返回结果. 思路 把命令行结果输入到管道中,exe的输出信息都存在了strOutput这个变量里. 实现代码 CString strCmd = L"yara64.exe ...

  6. 使用matplotlib绘制多个图形单独显示

    使用matplotlib绘制多个图形单独显示 一 代码 import numpy as np import matplotlib.pyplot as plt #创建自变量数组 x= np.linspa ...

  7. argv[1] 路径问题

    在看<学习opencv>一书时遇到一个小问题:函数只是通过argv传递参数来读取图片并显示,但是却一直弹出画布,没有图像. 如下:test.c # include<stdio.h&g ...

  8. oracle客户端安装

    一.引导安装并配置 1)下载客户端(两个文件) 2)选中两个压缩包解压到同一个文件夹下 3)点击setup 4)选择:创建和配置数据库桌面类选择安装目录,全局数据库名:orcl,密码admin口令管理 ...

  9. zabbix系列(七)zabbix3.0添加对tcp连接数及状态的监控

    原理: netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' TIME_WAIT 79 ESTABLISHED 6 LISTE ...

  10. 12-关于DOM操作的相关案例

    1.模态框案例 需求: 打开网页时有一个普通的按钮,点击当前按钮显示一个背景图,中心并弹出一个弹出框,点击X的时候会关闭当前的模态框 代码如下: <!DOCTYPE html> <h ...