javascript+php 实现blob加密视频(html video)
- 1、mp4地址加密为blob链接在html5的video标签展示
PHP:
1 $file_path = "...mp4"; //视频文件地址
2 ob_end_clean();
3 ob_start();
4 //打开文件
5 $handler = fopen($file_path, 'rb');
6 $file_size = filesize($file_path);
7 //声明头信息
8 Header("Content-type: application/octet-stream");
9 Header("Accept-Ranges: bytes");
10 Header("Accept-Length: ".$file_size);
11 Header("Content-Disposition: attachment; filename=" . basename( $file_path));
12 // 输出文件内容
13 $oct_data = fread($handler,$file_size);
14 fclose($handler);
15 ob_end_flush();
16
17 return $oct_data;
JS:
1 //创建XMLHttpRequest对象
2 var xhr = new XMLHttpRequest();
3 var url ="";//服务端地址
4 //配置请求方式、请求地址以及是否同步
5 xhr.open('POST', url, true);
6 //设置请求结果类型为blob
7 xhr.responseType = 'blob';
8 //请求成功回调函数
9 xhr.onload = function (e) {
10 if (this.status == 200) {//请求成功
11 var video = document.getElementById('video_player');
12 //获取blob对象地址,并把值赋给容器
13 video.onload = function(e) {
14 window.URL.revokeObjectURL(video.src);
15 };
16 video.src = window.URL.createObjectURL(this.response);
17 video.play();
18 }
19 };
20 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
21 xhr.send('id='+id);//传递参数
- 2、用FFMpeg将视频转为m3u8格式
JS(调用hls.js):
1 var url ="...m3u8";//m3u8地址
2 var video = document.getElementById('video_player');
3 if(Hls.isSupported()) {
4 var hls = new Hls();
5 hls.loadSource(url);
6 hls.attachMedia(video);
7 hls.on(Hls.Events.MANIFEST_PARSED,function() {
8 video.play();
9 });
10 }
11 else if (video.canPlayType('application/vnd.apple.mpegurl')) {
12 video.src = url;
13 video.addEventListener('loadedmetadata',function() {
14 video.play();
15 });
16 }
- 3、m3u8地址加密为blob链接
。。。待更新
javascript+php 实现blob加密视频(html video)的更多相关文章
- javascript实现blob加密视频源地址
一.HTML代码: <video id="my-video" class="video-js" playsinline controls preload= ...
- Java通过流对MP4视频文件进行加密,H5 video播放流
加密目标文件 代码如下: 不建议进行二次加密,若二次加密必须要二次解密 package com.xgt.util; import java.io.*; public class VideoEncode ...
- JavaScript学习--(智能社视频)
JavaScript学习,这是智能社官网上的JS视频,讲解的挺不错的,就是没有视频的demo,在视频中附上自己编写的一些demo... 下载地址:http://pan.baidu.com/s/1cPz ...
- 传智 Python基础班+就业班+课件 【最新完整无加密视频课程】
点击了解更多Python课程>>> 传智 Python基础班+就业班+课件 [最新完整无加密视频课程] 直接课程目录 python基础 linux操作系统基础) 1-Linux以及命 ...
- 利用WinHEX,重构狂牛加密视频1.0.0.1【只适合RIFF(AVI)】
幸亏是视频部分没有进行加密 1.用 WinHEX 打开狂牛加密视频, 查找 [RIFF] 字符串 2.光标放在 RIFF的 [R]上面, 按 CTRL+SHIFT+END 3.把选择的块写入新文件 H ...
- 《JavaScript闯关记》视频版硬广
<JavaScript闯关记>视频版硬广 stone 在菜航工作时,兼任内部培训讲师,主要负责 JavaScript 基础培训,2016年整理的<JavaScript闯关记>课 ...
- 【转】视频H5 video最佳实践
原文地址:https://github.com/gnipbao/iblog/issues/11 随着 4G 的普遍以及 WiFi 的广泛使用,手机上的网速已经足够稳定和高速,以视频为主的 HTML5 ...
- .NET MVC对接POLYV——HTML5播放器播放加密视频
官方参考文档:http://dev.polyv.net/2017/videoproduct/v-playerapi/html5player/html5-docs/ 1.上传视频之前根据自己需要对所上传 ...
- 和菜鸟们一起攻克金盾2018SS加密视频
今天刚拿到金盾2018SS加密的视频,界面如下:<ignore_js_op> 机器码由源来的“00000-00000-00000-00000”变成了一串32位的字符串了:<ignor ...
- javascript采用Broadway实现安卓视频自动播放的方法(这种坑比较多 不建议使用)
javascript采用Broadway实现安卓视频自动播放的方法Broadway 是一个 H.264 解码器, 比jsmpge清晰度要高 使用 Emscripten 工具从 Android 的 H. ...
随机推荐
- JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践
前言 自 2014 年发布以来, JDK 8 一直都是相当热门的 JDK 版本.其原因就是对底层数据结构.JVM 性能以及开发体验做了重大升级,得到了开发人员的认可.但距离 JDK 8 发布已经过去了 ...
- 实现在Qt窗口中嵌套SDL
实现在Qt窗口中嵌套SDL 在现代软件开发中,多媒体处理和交互性成为应用程序不可或缺的一部分.Qt作为一个强大的GUI框架,为开发者提供了丰富的图形.界面和事件处理工具.然而,有时候,我们可能需要更多 ...
- [ABC128E] Roadwork
2023-01-14 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 区间覆盖,线段树,双堆 解题思路 可以将问题转化为区间覆盖问题和单点查询问 ...
- Unity UGUI的Toggle(复选框)组件的介绍及使用
Unity UGUI的Toggle(复选框)组件的介绍及使用 1. 什么是Toggle组件? Toggle(复选框)是Unity UGUI中的一个常用组件,用于实现复选框的功能.它可以被选中或取消选中 ...
- dotnet SemanticKernel 入门 自定义变量和技能
本文将告诉大家如何在 SemanticKernel 框架内定义自定义的变量和如何开发自定义的技能 本文属于 SemanticKernel 入门系列博客,更多博客内容请参阅我的 博客导航 自定义变量是一 ...
- pandas常用的数据类型,(serises和dataform)
- docker bridge网络类型研究
bridge模式是docker的默认网络模式,使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能.可以使用iptables -t nat -vnL ...
- CopyOnWriteArrayList 写时复制思想
写时复制 conpyOnWrite容器即写时复制容器.往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] ...
- python第2~5章 code
02基本语法 print('he\aaa\aaa') # 这是一个打印语句,请你看见了不要慌张# 这是一个注释# 注释会被解释器所忽略# print(123+456) 这行代码被注释了,将不会执行pr ...
- 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(8) -- 使用Converter类实现内容的转义处理
在我们WPF应用端的时候,和WInform开发或者Vue前端开发一样,有时候也需要对内容进行转义处理,如把一些0,1数值转换为具体含义的文本信息,或者把一些布尔变量转换为是否等,都是常见的转换处理,本 ...