js-获取flv流文件二进制数据并分析

2024-09-05 11:48

本文主要是介绍js-获取flv流文件二进制数据并分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

js-获取flv流文件二进制数据并分析 目录

文章目录

  • 前言
  • 效果展示
  • 代码实现
    • `index.html`


前言

  • flv流文件,进行16进制转换,并用js解析

效果展示

在这里插入图片描述

代码实现

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Video</title><style>body{max-width: 90%;}#hex{background-color: #acf5ff;width: 40%;float: left;}#string{background-color: #ffcabf;width: 40%;float: right;word-wrap: break-word;}</style>
</head>
<body>
<input type="file" id="file">
<div id="hex">Hex:</div>
<div id="string">String:</div>
</body>
<script>const reader = new FileReader();const fileDom = document.getElementById('file');fileDom.addEventListener('change', event=>{const file = event.target.files[0];// console.log(file);reader.readAsArrayBuffer(file);reader.onload = function () {console.log(reader.result);const view = new DataView(reader.result);let arr = [];if (String.fromCharCode(view.getInt8(0)).toLowerCase() == 'f' &&String.fromCharCode(view.getInt8(1)).toLowerCase() == 'l' &&String.fromCharCode(view.getInt8(2)).toLowerCase() == 'v' ) {console.log(view.getUint8(0).toString(16));for (let i = 0, tmp = ''; i < view.byteLength; i++){let str = view.getInt8(i).toString(16);str = str.length < 2 ? '0x0' + str : '0x' + str;tmp += str + ' ';if (i < 9){if (i == 8) {tmp = 'Header:<br>' + tmp;arr.push(tmp);tmp = '';arr.push('Flv Body: ');}}else if(i >= 9) {if (i%16 == 0){// console.log(view.getInt8(i+6),view.getInt8(i+7),view.getInt8(i+8));arr.push(tmp);tmp = '';}}}}document.getElementById('hex').innerHTML = arr.join("<br />");reader.readAsBinaryString(file);reader.onload = function () {document.getElementById('string').innerHTML = reader.result;}}});
</script>
</html>

这篇关于js-获取flv流文件二进制数据并分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138874

相关文章

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个