使用flv.js与video.js实现播放视频直播(简教程)-阿里云开发者社区

开发者社区> 关爱单身狗> 正文

使用flv.js与video.js实现播放视频直播(简教程)

简介: 推荐教程:《使用flv.js做直播》 1.准备 1.下载 nginx 2.下载 livego 3.下载 OBS 4.引用 flv.js 5.引用 video.
+关注继续查看

推荐教程:《使用flv.js做直播》

1.准备

1.下载 nginx
2.下载 livego
3.下载 OBS
4.引用 flv.js
5.引用 video.js

( ̄▽ ̄)/ 以上软件请大家自行解压或安装

2.环境配置

首先运行livego

img_f477a370a03e290171b9c04f19c954a2.png
运行livego效果

安装与运行OBS
打开设置 配置流服务器

配置连接


img_36c9ab120a15c3e5a3c1e09cfcc22beb.png
配置连接

连接成功后livego会有提示


img_059e64e743eca47db2e12ba503aa1aed.png
提示
img_e5437602d3475d6713423daa709f9df9.png
载入源
img_564a888daac9b1e6342e8d92757ddb32.jpe
效果

进入nginx下的html目录,新建个index1.htmlindex2.html
然后运行 nginx (运行前自行修改nginx端口)

2.使用flv.js实现直播播放

之前我写过教程《flv.js简单使用示例
吧之前的代码稍作修改

代码:

<!DOCTYPE html>
<html>

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>flv.js demo</title>
    <style>
        .mainContainer {
            display: block;
            width: 1024px;
            margin-left: auto;
            margin-right: auto;
        }

        .urlInput {
            display: block;
            width: 100%;
            margin-left: auto;
            margin-right: auto;
            margin-top: 8px;
            margin-bottom: 8px;
        }

        .centeredVideo {
            display: block;
            width: 100%;
            height: 576px;
            margin-left: auto;
            margin-right: auto;
            margin-bottom: auto;
        }

        .controls {
            display: block;
            width: 100%;
            text-align: left;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
</head>
<body>
    <div class="mainContainer">
        <video id="videoElement" class="centeredVideo" controls autoplay width="1024" height="576">Your browser is too old which doesn't support HTML5 video.</video>
    </div>
    <br>
    <div class="controls">
        <!--<button onclick="flv_load()">加载</button>-->
        <button onclick="flv_start()">开始</button>
        <button onclick="flv_pause()">暂停</button>
        <button onclick="flv_destroy()">停止</button>
        <input style="width:100px" type="text" name="seekpoint" />
        <button onclick="flv_seekto()">跳转</button>
    </div>
    <script src="./flv.js/flv.min.js"></script>
    <script>
        var player = document.getElementById('videoElement');
        if (flvjs.isSupported()) {
            var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                "isLive": true,//<====加个这个 
                url: 'http://127.0.0.1:7001/live/movie/a.flv',//<==自行修改

            });
            flvPlayer.attachMediaElement(videoElement);
            flvPlayer.load(); //加载
            flv_start();
        }

        function flv_start() {
            player.play();
        }

        function flv_pause() {
            player.pause();
        }

        function flv_destroy() {
            player.pause();
            player.unload();
            player.detachMediaElement();
            player.destroy();
            player = null;
        }

        function flv_seekto() {
            player.currentTime = parseFloat(document.getElementsByName('seekpoint')[0].value);
        }
    </script>
</body>

</html>

访问http://127.0.0.1/index1.html

如果浏览器开始播放视频那说明你已经成功

img_f33cb940f1944fe5505199057e17eaba.gif
效果

3.使用video.js实现直播播放(HLS)

根据livego教程

img_c2e8400ee0025945c09b451d673f02d8.jpe
教程

那么 video.js 的播放地址应该是 http://127.0.0.1:7002/live/movie/a.m3u8

但是实际测试时失败了罒ω罒

所以就使用 ffmpeg 将RTMP转为HLS 放到nginx的html目录下

ffmpeg命令参考:

ffmpeg -i rtmp://127.0.0.1:1935/live/movie/a -c copy -f hls -hls_time 5.0 -hls_list_size 0 -hls_wrap 15 ../html/a.m3u8
img_fb4897df1fdcbf821520e3dbfdcee785.png
ffmpeg

代码:

<html>
<head>
    <title>demo</title>
    <meta charset="utf-8">
    <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
    <script src="https://unpkg.com/video.js/dist/video.js"></script>
    <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
</head>

<body>
    <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" data-setup="{}">
        <source src="./a.m3u8" type='application/x-mpegURL'>
        <!-- <source src="http://127.0.0.1:7002/live/movie/a.m3u8" type='application/x-mpegURL'> -->
    </video>
    <script type="text/javascript">
        var myPlayer = videojs('example_video_1');
        videojs("example_video_1").ready(function () {
            var myPlayer = this;
            myPlayer.play();
        });
    </script>
</body>

</html>
img_efb1352a13fdd8a87cc7fbe94be35d6b.gif
效果

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
初识RxSwift及使用教程 韩俊强的博客
什么是RxSwift? RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护 其他语言像C#, Java 和 JS 也有,Rx.
1365 0
优秀教程:使用 CSS3 动画实现的超炫的过渡特效
  Codrops 最近分享了一些很酷的图片切换灵感。有三种不同的用例:小的图像幻灯片,大标题幻灯片以及使用透明背景的产品幻灯片。状态转换使用 CSS 动画完成,我们能够定义从任何方向进来的图片的行为。
810 0
分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
我发布的「正则表达式入门以及高阶教程」,欢迎学习。 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力; 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大量的实例加深对概念的理解; 实例操作是对概念最好的理解,也是学习新语言最有效的办法; 在课程中也穿插着大量软件开发的技巧和大家分享; 应该是把晦涩的正则表达式讲解的最生动的课程; 掌握了正则表达式后,您一定会觉得这是一门最值得掌握的语言。
936 0
大数据学习资料下载,新手攻略,数据分析工具、软件使用教程
作为 IT 类职业中的“大熊猫”,大数据工程师的收入待遇可以说达到了同类的顶级。国内 IT、通讯、行业招聘中,有 10% 都是和大数据相关的,且比例还在上升。“大数据时代的到来很突然,在国内发展势头激进,而人才却非常有限,现在完全是供不应求的状况。
1603 0
【双11背后的技术】阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的
作者:蔡华  前言 在今年的双11中,双11天猫狂欢夜的直播成为一大亮点。   根据官方披露数据,直播总观看人数超4257万,同时观看人数峰值达529万,在云端实现了高计算复杂度的H.265实时转码和窄带高清技术。其实不光是双11,直播已经成为了2016年互联网最火爆的话题。除了内容的大规模
4010 0
IDEA 插件开发入门教程
IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,它本身的功能已经非常强大了,但是每个人的需求不一样,有些需求 IDEA 本身无法满足,于是我们就需要自己开发插件来解决。工欲善其事,必先利其器,想要提高开发效率,我们可以借助 IDEA 提供的插件功能来满足我们的需求。
6818 0
PySide教程:一个简单的点击按钮示例
  在这篇文章里,我们将为你展示如何使用PySide使用信号、槽机制。基本来说,这是Qt提供给你的允许一个图形控件与其他图形控件或者python代码进行通讯的特性。   我们将要创建一个应用,你点击应用中的按钮后将在Python终端里显示"Hello World"字样。
963 0
+关注
关爱单身狗
简书:https://www.jianshu.com/u/f19e29243ff6
103
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载