Aliplayer视频点播加密播放

Aliplayer视频播放器填坑

aliplayer视频点播分为FlashHTML5两个版本,移动端不支持Flash播放器。
Flash播放器兼容IE8+HTML5播发器支持比较新的浏览器,对浏览器的版本要求较Flash播放器对浏览器的版本的要求要高一些。
其中:
h5播放器在移动端不支持flvrtmp的播放
播放flvm3u8视频,PC端支持的浏览器,需要启用允许跨域访问

HLS标准加密与MPS私有加密对比

加密类型/设备环境 iOS Android PC
标准加密 HLS Chrome
Firefox
Safari
Edge
IE 11+for Windows8.1+
私有加密 MPS × Chrome for Android Chrome
Firefox
Safari
Edge
IE 11+for Windows8.1+

Aliplayer播放器Demo

注:Aliplayer在线配置网址
HTML代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title>用户测试用例</title>
        <!-- aliplayer样式表 -->
        <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
        <!-- aliplayer Flash版&HTML5版 -->
        <script src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js" type="text/javascript" charset="utf-8"></script>
        <!-- Flash版 -->
        <script src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-flash-min.js" type="text/javascript" charset="utf-8"></script>
        <!-- HTML5版 -->
        <script src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-h5-min.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="prism-player" id="J_prismPlayer"></div>
    </body>
</html>

JavaScript代码:

var player = new Aliplayer({
    id: 'J_prismPlayer',
    width: '100%',
    autoplay: true,
    //支持播放地址播放,此播放优先级最高
    source: '播放url',

    //播放方式二:点播用户推荐
    vid: '',
    playauth: 'ddd',
    cover: 'logo.png',

    //播放方式三:仅MPS用户使用(私有加密播放)
    vid: '',
    accId: 'dd',
    accSecret: 'dd',
    stsToken: 'dd',
    domainRegion: 'dd',
    authInfo: 'dd',

    //播放方式四:使用STS方式播放
    vid: '',
    accessKeyId: 'dd',
    securityToken: 'dd',
    accessKeySecret: 'dd',
    region: 'cn-shanghai',
}, function(player) {
    console.log('播放器创建好了。')
});

注:aliplayer属性和接口使用说明

Vue中使用Aliplayer播发器

:现在index.html中引入aliplayercssjs,或者在当前vue文件中引入aliplayercssjs

<template>
  ...
  <!-- 引入aliplayer播放器 -->
  <div class="prism-player" id="player-con"></div>
  ...
</template>

初始化aliplayer播发器

export default {
    data() {
        return {
            player: {},
            timer: null
        };
    },
    created() {
        this.loading = this.$loading({
            background: "rgba(0, 0, 0, 0.5)",
            text: "拼命加载中"
        });
    },
    methods: {
        // 销毁和重建aliplayer
        changePlayer(dt) {
            this.player.dispose();
            this.initPlayer(dt);
        },
        // 获取视频播放信息
        getKeyInfo(videoId, flag) {
            this.$axios.post(
                "XXXXXToken",
                qs.stringify({
                    videoId
                })
            ).then(res => {
                let data = res.data;
                if (data.code == 1) {
                    let dt = data.result_data;
                    // 是否初次创建?初次创建播放器:销毁和重建播发器
                    flag ? this.initPlayer(dt) : this.changePlayer(dt);
                }
            });
        },
        // 初始化视频播放器
        initPlayer(data) {
            // 清空dom节点
            document.getElementById("player-con").innerHTML = "";
            // 改变this指向,使其指向当前this指向。
            let _this = this,
                token = sessionStorage.getItem("token"),
                userId = sessionStorage.getItem("userId"),
                isConfirm = sessionStorage.getItem("isConfirm");
            this.player = new Aliplayer({
                    id: "player-con", // 播放器id
                    format: "m3u8", // 视频格式
                    width: "100%",
                    height: "450px",
                    playsinline: true,
                    preload: true,
                    encryptType: 1,
                    // HLS标准加密为0(默认),MPS私有视频加密为1
                    controlBarVisibility: "always",
                    useH5Prism: true,
                    // 视频底部状态工具栏设置,默认为false,全显示
                    skinLayout: [{
                            name: "bigPlayButton",
                            align: "blabs",
                            x: 30,
                            y: 80
                        },
                        {
                            name: "H5Loading",
                            align: "cc"
                        },
                        {
                            name: "errorDisplay",
                            align: "tlabs",
                            x: 0,
                            y: 0
                        },
                        {
                            name: "infoDisplay"
                        },
                        {
                            name: "tooltip",
                            align: "blabs",
                            x: 0,
                            y: 56
                        },
                        {
                            name: "thumbnail"
                        },
                        {
                            name: "controlBar",
                            align: "blabs",
                            x: 0,
                            y: 0,
                            children: [{
                                    name: "progress",
                                    align: "blabs",
                                    x: 0,
                                    y: 44
                                },
                                {
                                    name: "playButton",
                                    align: "tl",
                                    x: 15,
                                    y: 12
                                },
                                {
                                    name: "timeDisplay",
                                    align: "tl",
                                    x: 10,
                                    y: 7
                                },
                                {
                                    name: "fullScreenButton",
                                    align: "tr",
                                    x: 10,
                                    y: 12
                                },
                                {
                                    name: "volume",
                                    align: "tr",
                                    x: 5,
                                    y: 10
                                }
                            ]
                        }
                    ],
                    // MPS
                    vid: 'vid',
                    accId: 'accId',
                    accSecret: 'accSecret',
                    stsToken: 'stsToken',
                    domainRegion: "cn-beijing",
                    authInfo: '{"ExpireTime": "' +
                        expireTime +
                        '","MediaId": "' +
                        videoId +
                        '","Signature": "' +
                        signature +
                        '"}'
                },
                function(player) {
                    // html5版本的视频事件写在当前callback中
                    player.play();

                    // 定时器
                    let clear = () => {
                        if (_this.timer) {
                            clearTimeout(_this.timer);
                            _this.timer = null;
                        }
                    };

                    // 获取播放时间
                    let getTimes = () => {
                        if (player.getCurrentTime() >= 60) {
                            if (isConfirm == 0) {
                                player.pause();
                                player.fullscreenService.cancelFullScreen();
                            }
                        }
                        // 递归回调,计算播放时间
                        _this.timer = setTimeout(getTimes, 1000);
                    };

                    player.on("ready", function(e) {
                        // 首次播放
                        clear();
                        getTimes();
                        player.on("play", function(e) {
                            // 播放视频
                            clear();
                            getTimes();
                        });
                        player.on("pause", function(e) {
                            // 暂停视频播放
                            clear();
                        });
                        player.on("ended", function(e) {
                            // 视频播放结束
                            clear();
                        });
                        player.on("error", function(e) {
                            // 视频播放失败
                            clear();
                        });
                    });
                }
            );
        },
        // 切换视频播放源:使用函数截流,防止多次触发影响数据展示
        switchVideo: Debounce(function(index, videoId, isPerchase) {
            this.mark = index;
            this.getKeyInfo(videoId);
            this.isPerchase = isPerchase == undefined ? true : isPerchase;
        }, 500)
    },
    // 生命周期钩子函数:销毁
    destroyed() {
        // 清除定时器
        clearInterval(this.timer);
        this.timer = null;
        let play = this.player,
            len = Object.keys(play);
        if (!len) return;
        // 销毁播放器
        play.dispose();
    }
};

注:播放器中隐藏了画中画、画质切换、视频下载等功能。
同时需要注意的是,aliplayerH5视频点播 在iOS移动端是不支持的,苹果移动端不支持aliplayer的私有加密播放方式!

原文地址:https://www.cnblogs.com/zxk5211/p/aliplayer.html

时间: 2024-10-31 00:29:47

Aliplayer视频点播加密播放的相关文章

视频加密播放

最近在研究视频加密播放,我发现了一款比较不错的FLV/MP4视频加密系统.它分为2个程序端,加密端和播放端:加密端:负责对视频文件加密,加密后的视频只能通过播放端才能播放. 播放端:负责播放加密和未加密的视频 视频加密主要是加密算法,简单说下思路,代码就不贴了. 1.首先,随机生成一个32个字符长度的密钥. 2.对文件内容,使用前面生成的密钥,进行RC4加密处理. 3.在加密前,文件的头部加上一些加密标记,来区别是否是加密文件. 改进后的RC4加密算法,优点是,加密后长度不变,并且可以任意位置进

关于录制短视频点播不能播放问题的总结

现象描述:直播正常,截取的短视频可以正常播放,分享给他人不能播放. 排查过程:H5分享页面200.api服务器录制短视频时日志正常,分享给他人点播后无日志.直播服务器/点播服务器 被分享短视频的m3u8文件正常并且ts片均存在且可下载并正常播放(声音,图像).csm日志对比,①直播录制短视频时日志截图:②点播短视频时日志截图: 排查问题遗漏点:只是下载下来观察ts是否正常,没有直接对着点播服务器播放测试. 最后:对着点播服务直接播放success对着点播服务器的vip播放fail keepali

如何利用阿里视频云开源组件,快速自定义你的H5播放器?

摘要: Aliplayer希望提供一种方便.简单.灵活的机制,让客户能够扩展播放器的功能,并且Aliplayer提供一些组件的基本实现,用户可以基于这些开源的组件实现个性化功能,比如自定义UI和自己App server的交互等等,而不用从头开始开发一些功能,节省时间和精力. 阿里云播放器SDK(ApsaraVideo for Player SDK)是阿里视频云端到云到端服务的重要一环,除了支持点播和直播的基础播放功能外,还深度融合视频云业务,支持视频的加密播放.安全下载.首屏秒开.低延时等业务场

超级狗是集软件授权、课件保护和身份认证于一身的加密狗。

超级狗是加密狗家族中最新一代软件保护和授权产品.它提供了强大的软件.课件防盗版功能以及灵活的软件授权功能,保护软件开发商的知识产权与核心技术,确保开发商的市场收入. 超级狗将软件保护与授权技术化繁为简.通过易于理解.易于上手的外壳保护工具.许可设计工具,以及在线授权工具,软件开发商可以轻松地实现高强度的软件保护和多种授权模式. 在保持SafeNet一贯高品质.高稳定性.高安全性的基础之上,超级狗还提供了基于时间.功能控制的许可模式,同时拥有更友好.直观的用户界面和更简单的操作流程. 超级狗可以帮

直播技术总结(三)ijkplayer的一些问题优化记录

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/57075026 前言:ijkplayer中一些问题记录优化,看下Agenda: 在弱网时如何优化 ijkplayer播放卡顿如何优化 如何支持https链接播放? 如何降低ijkplayer延迟效应 ijkplayer中音视频同步,是如何做的? 一.在弱网时如何优化 好的网络下视音频能够得到及时的发送,不会造成视音频数据在本地的堆积

行业云服务——乐视云点播服务试用体验

面向特定行业的云服务逐渐成为热点.可以说行业云服务把云计算推向了一个更高的层次——从具体的业务领域入手进行功能设计,将底层的技术实现细节屏蔽掉,向最终用户暴露业务层面的操作界面或API. 最近一段时间,媒体云炒的风风火火,七牛.腾讯.乐视等纷纷推出了媒体/视频云服务,包括:直播(互动直播).点播.视频处理等.微软的Windows Azure也提供了Media Service服务,而且宣称Media Service为索契冬奥会提供了网络视频直播服务. 乐视云目前并没有开放太多功能:云点播.云直播.

读书笔记-现代操作系统-7多媒体操作系统-7.6多媒体文件系统泛型7.7文件存放

7.6 多媒体文件系统泛型 多媒体系统和传统的文件系统有很大的不同,采用的是类似VCR工作方式一样的拉取型服务器(pull server): 用户进程发出start系统调用,指定要读取的文件和其他各种参数,然后用户进程以帧进来的速率对他们进行处理.直到用户发出stop停止命令停止数据退给用户. 7.6.1 VCR控制功能 视频服务通常也需要实现VCR控制功能,包括暂停.快进和倒带. 暂停:用户发送一个消息给视频服务器,告诉他停止,然后视频服务器记住当前帧就可以了. 但是这中间有一个问题是,为了保

CDN高级技术专家周哲: 深度剖析短视频分发过程中的用户体验优化技术点

2018深圳云栖大会已经圆满落幕,在飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点. 讲解从三个部分展开:短视频应用场景,阿里云短视频解决方案,阿里云对短视频用户体验优化的相关优化. 短视频应用场景 短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛. 一. 社群分享场景用户可以录制视频

CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点. 讲解从三个部分展开:短视频应用场景.阿里云短视频解决方案.阿里云对短视频用户体验的相关优化. 短视频应用场景 短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛. 一. 社群分享场景 用户可以录制视频