;

一、为什么要使用 base64 我们知道一个字节可表示的范围是 0 ~ 255(十六进制:0x00 ~ 0xFF), 其中 ASCII 值的范围为 0 ~ 127(十六进制:0x00 ~ 0x7F);而超过 ASCII 范围的 128~255(十六进制:0x80 ~ 0xFF)之间的值是不可见字符。 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准 ISO/IEC 646。 在 ASCII 码中 0 – 31和 127 是控制字符,共 33 个。以下是其中一部分控制字符: 其余 95 个,即 32 – 126 是可打印字符,包括数字、大小写字母、常用符号等。 当不可见字符在网络上传输时,比如说从 A 计算机传到 B 计算机,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。 为了解决这个问题,我们可以先对数据进行编码,比如 base64 编码,变成可见字符,也就是 ASCII 码可表示的可见字符,从而确保数据可靠传输。Base6…

一文读懂base64编码 2020年6月8日
;

Fast Forward Moving Picture Experts Group 教程:http://www.ruanyifeng.com/blog/2020/01/ffmpeg.html

ffmpeg 2020年5月30日
;

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>利用Blob对象创建文件</title> </head> <body> <textarea name="" id="downloadFileTextarea" cols="30" rows="10"></textarea> <br> <button id="downloadFileButton">downloadFileButton</button> <script> function downloadFile(fileName, content, blobOptions) { // blobOptions = { // type: ‘text/csv’, // endings: ‘native’ // or transparent // }; blobOptions = blobOptions || …

利用Blob, a.download, URL.createObjectURL模拟下载文件 2020年5月29日
;

一、概述 我们常见的视频文件,大多为 mkv、mov、mp4 等扩展名。一般情况下,我们粗略地根据扩展名判断文件类型。但实际上,科学的分类方法如下: 编码:指的是媒体文件中音视频的编码,如:H.264、AAC 容器:可根据文件扩展名区分,用于将多部分内容整合,包括:  视频  音频,可以是多音轨,如:一部影片同时具备多种语言  字幕:一部影片也可以包含多种语言的内置字幕 二、常见的文件(容器)格式 AVI (.avi)   其含义是 Audio Video Interactive,就是把视频和音频编码混合在一起储存,是最常见的音频视频容器。支持的视频音频编码也是最多的。AVI 也是最长寿的格式,已存在 10 余年了,虽然发布过改版(V2.0 于 1996 年发布),但已显老态。 MPG (.mpg/.mpeg/.dat)   MPEG 编码采用的音频视频容器,具有流的特性,里面又分为 PS、TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV。 VOB (.vob)   DVD 采用的音频视频容器格式(即视频 MPEG-2,音频用 AC3 或者 DTS),支持多视频多音轨多字幕章节等。 MP4   MPEG-4 编码采用的音频视频容器,基于 QuickTime MOV 开发,具有许多先进特性。 3GP   3GPP 视频采用的格式…

视频文件的容器格式和编码格式 2020年5月29日
;

二进制 Base64 网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 不同的应用程序支持不同的 MIME 类型。 MIME 类型大约有191种类型,是的没错,191种。 arrayBuffer ArrayBuffer表示二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据。是最基础的原始数据容器,无法直接读取或写入, 需要通过其他方式来读写。 但可根据需要将其传递到类型化数组或 DataView 对象来解释原始缓冲区。 也就是说他是一个二进制数据的原始缓冲区,虽然 JavaScript 是弱类型语言,但是他本身是对数据的类型和大小都有限制的,我们需要通过某种数据结构将缓冲区的内容有序的读取出来或写进去 例如: Int8Array 8位有符号整数 Uint8Array 8位无符号整数 Uint8ClampedArray 同上,像素操作 Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array …

Base64,MIME,arraybuffer,blob,blob URL,FileReader,ts,Codec 2020年5月28日
;

包括原理篇/思路篇/实践篇/方案篇/前端篇/总结 一:原理篇 何李石:七牛直播云服务技术详解 直播模型及其实现 一个通用的直播模型一般包括三个模块:主播方、服务器端和播放端。   首先是主播方,它是产生视频流的源头,由一系列流程组成:第一,通过一定的设备来采集数据;第二,将采集的这些视频进行一系列的处理,比如水印、美颜和特效滤镜等处理;第三,将处理后的结果视频编码压缩成可观看可传输的视频流;第四,分发推流,即将压缩后的视频流通过网络通道传输出去。 其次是播放端,播放端功能有两个层面,第一个层面是关键性的需求;另一层面是业务层面的。先看第一个层面,它涉及到一些非常关键的指标,比如秒开,在很多场景当中都有这样的要求,然后是对于一些重要内容的版权保护。为了达到更好的效果,我们还需要配合服务端做智能解析,这在某些场景下也是关键性需求。再来看第二个层面也即业务层面的功能,对于一个社交直播产品来说,在播放端,观众希望能够实时的看到主播端推过来的视频流,并且和主播以及其他观众产生一定的互动,因此它可能包含一些像点赞、聊天和弹幕这样的功能,以及礼物这样更高级的道具。 直播服务器端提供的最核心功能是收集主播端的视频推流,并将其放大后推送给所有观众端。除了这个核心功能,还有很多运营级别的诉求,比如鉴权认证,视频连线和实时转码,自动鉴黄,多屏合一,以及云端录制存储…

视频直播的技术原理和实现思路方案整理 2020年5月27日
;

1.斗鱼(http-flv) 找到flv的请求,新窗口打开就可自动下载

各大平台视频及直播下载方法 2020年5月27日
;

最近打算直播上http-flv,之前用的是rtmp和hls。为什么使用http-flv,它有什么优缺点? 怎么让流媒体服务器支持flv直播? 一、市场上哪家直播使用了http-flv: 通过抓包分析: 优酷的pc网页直播使用了http-flv。 斗鱼、熊猫tv、虎牙pc网页上的也使用了http-flv。 二、http-flv、rtmp和hls直播的优缺点: A、三者的延迟性: http-flv:低延迟,内容延迟可以做到2-5秒。 Rtmp:低延迟,内容延迟可以做到2-5秒。 Hls::延迟较高。 B、三者的易用性: rtmp和http-flv:播放端安装率高。只要浏览器支持FlashPlayer就能非常简易的播放。 hls:最大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信 等转发分享,不需要安装任何独立的APP,有浏览器即可。 C、rtmp和http-flv比较: (1) 穿墙:很多防火墙会墙掉RTMP,但是不会墙HTTP,因此HTTP FLV出现奇怪问题的概率很小。 (2) 调度:RTMP也有个302,可惜是播放器as中支持的,HTTP FLV流就支持302方便CDN纠正DNS的错误。 (3) 容错:SRS的HTTP FLV回源时可以回多个,和RTMP一样,可以支持多级热备。 (4) 简单:FLV是最简单的流媒体…

直播http-flv原理 2020年5月27日
;

权威的itef官方文档参见: https://datatracker.ietf.org/doc/draft-pantos-http-live-streaming/ 另外参见苹果官方文档 https://developer.apple.com/streaming/ #EXTM3U //必需,表示一个扩展的m3u文件 #EXT-X-VERSION:3            //hls的协议版本号,暗示媒体流的兼容性 #EXT-X-MEDIA-SEQUENCE:3560  //暗示首个视频分段的sequence number,只能有一个该字段,也可以没有,若没有就假设首个视频分段的sequence number为0 #EXT-X-ALLOW-CACHE:NO       //是否允许客户端对下载的视频分段缓存用于以后播放? #EXT-X-TARGETDURATION:25    //每个视频分段最大的时长(单位秒) #EXT-X-DISCONTINUITY        //暗示当前的视频分段和它之前及之后的视频分段有不同的编码不连续性 #EXTINF:,        //每个视频分段都由以下三行信息组成,duration表示该段的时长,以秒为单位,注意最后有个逗号 http:……mp4    //视频分段的地址 #EXT…

HLS中m3u8格式规范解读 2020年5月26日
;

m3u8 这两年来我们发现越来越多的视频应用使用了m3u8格式的视频,因为可以兼容PC、移动端。相比mp4等视频源,m3u8可以减轻服务器压力(按需加载)。HLS是由苹果公司率先提出的一种协议标准,可用于直播。 m3u8是一种基于HLS(HTTP Live Streaming) 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成。不同于mp4大文件,m3u8是由一系列的ts文件组成,一般一个ts文件大概5-10秒,这些ts文件通过一个.m3u8文件做索引。用户播放视频时,可随意拖动视频进度,会读取相应进度的ts文件继续观看视频,不必等到下载完整的视频。因此在播放m3u8的时候很少有卡顿的现象。 关于HLS直播的技术示例以及m3u8切片技术我们会在后面有文章介绍。本文只做HLS点播讲解,与直播不同,点播是指视频文件已经在编辑好,随时可播放。 由于HLS是由Apple公司提出的,所以在iOS电脑或手机上,你可以直接使用Safari浏览器的<video>播放m3u8格式视频文件。而其他浏览器则需要借助hls.js来兼容m3u8。 使用hls.js,不需要任何定制的播放器,只需要<video>元素就能播放m3u8。 加载js和播放元素 在需要放置视频的页面位置上加入video元素和hls.js文件。 &l…

HTML5点播m3u8(hls)格式视频 2020年5月26日